使用WordPress 的 “comment_class” filter 修改评论列表样式的方法
首先了解一下这个函数:
add_filter( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true
重要的是,$accepted_args 值必须反映绑定的回调实际选择接受的参数数。
在静态类里使用用方法:
add_filter( 'media_upload_newtab', array( 'My_Class类', 'media_upload_callback' ) );
实例里的使用方法:
add_filter( 'media_upload_newtab', array( $this, 'media_upload_callback' ) );
您也可以传递匿名函数作为回调。例如
add_filter( 'the_title', function( $title ) { return '' . $title . ''; } );
这个comment_class 过滤器会修改返回的WordPress中当前评论的 CSS 类。
用法
add_filter('comment_class', 'your_function_name', 10, 5); function your_function_name($classes, $css_class, $comment_id, $comment, $post) { // your custom code here return $classes; }
参数
$classes
(string[]): An array of comment classes.$css_class
(string[]): An array of additional classes added to the list.$comment_id
(string): The comment ID as a numeric string.$comment
(WP_Comment): The comment object.$post
(int|WP_Post): The post ID or WP_Post object.
更详细的信息
WordPress Developer Resources: comment_class
例子
增加一个自定义的css class
为每条评论添加自定义类 “custom-comment”。
add_filter('comment_class', 'add_custom_comment_class', 10, 5); function add_custom_comment_class($classes, $css_class, $comment_id, $comment, $post) { $classes[] = 'custom-comment'; return $classes; }
高亮某位作者的评论
帖子作者的评论添加 “评论-作者 “类。
add_filter('comment_class', 'highlight_author_comments', 10, 5); function highlight_author_comments($classes, $css_class, $comment_id, $comment, $post) { $post = get_post($post); if ($comment->user_id === $post->post_author) { $classes[] = 'comment-author'; } return $classes; }
奇偶交替效果
添加 “奇数 “和 “偶数 “交替评论类,以便设计样式。
add_filter('comment_class', 'add_odd_even_classes', 10, 5); function add_odd_even_classes($classes, $css_class, $comment_id, $comment, $post) { global $comment_alt; $comment_alt = (isset($comment_alt) ? $comment_alt : 0) + 1; $classes[] = ($comment_alt % 2) ? 'odd' : 'even'; return $classes; }
根据评论回复层级添加类
添加 “depth-X “类,其中 X 是评论的层级。
add_filter('comment_class', 'add_comment_depth_class', 10, 5); function add_comment_depth_class($classes, $css_class, $comment_id, $comment, $post) { $depth = intval($comment->comment_parent) > 0 ? get_comment_depth($comment_id) : 1; $classes[] = 'depth-' . $depth; return $classes; }
从评论中删除特定类
删除所有评论中的 “comment”类。
add_filter('comment_class', 'remove_comment_class', 10, 5); function remove_comment_class($classes, $css_class, $comment_id, $comment, $post) { $classes = array_diff($classes, array('comment')); return $classes; }
阅读余下内容