使用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;
}

 

 

 

 

 

 

 

 

 

 

 

阅读余下内容
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号