JustNews主题评论调用排除博主的评论

Justnews主题边栏小工具中,调用评论列表,默认是调用所有的评论(包含所有博主登录后回复的评论也会调用显示)。只调用非博主的评论,你需要在评论查询中添加一个条件来排除博主的评论。通常,WordPress博主的评论具有user_id,而其他评论的user_id为0。所以添加 ‘user_id’ => 0 条件以排除博主的评论条件到 justnews主题目录widgets中comments.php 文件中就可以实现排除博主的评论。

<?php
defined( 'ABSPATH' ) || exit;

class WPCOM_comments_widget extends WPCOM_Widget{
    public function __construct(){
        $this->widget_cssclass = 'widget_comments';
        $this->widget_description = '显示网站最新的评论列表';
        $this->widget_id = 'comments';
        $this->widget_name = '#最新评论';
        $this->settings = array(
            'title'       => array(
                'name' => '标题',
            ),
            'number'      => array(
                'value'   => 10,
                'name' => '显示数量',
            )
        );
        parent::__construct();
    }

    public function widget( $args, $instance ) {
        if ( $this->get_cached_widget( $args ) ) return;
        ob_start();
        $number = !empty( $instance['number'] ) ? absint( $instance['number'] ) : $this->settings['number']['value'];
        $comments_query = new WP_Comment_Query();
        $comments = $comments_query->query( array( 'post_status' => 'publish', 'status' => 'approve', 'number' => $number, 'user_id' => 0 ) ); // 添加 'user_id' => 0 条件以排除博主的评论
        $this->widget_start( $args, $instance );

        if ( $comments ) : ?>
            <ul>
                <?php foreach ( $comments as $comment ) :
                    $author_url = $comment->comment_author_url ?: '#';
                    $display_name = $comment->comment_author;
                    $attr = 'target="_blank" rel=nofollow'; ?>
                    <li>
                        <div class="comment-info">
                            <a href="<?php echo esc_url($author_url);?>" <?php echo $attr; ?>>
                                <?php echo get_avatar( $comment, 60, '', $display_name ?: __('Anonymous', 'wpcom') );?>
                                <span class="comment-author"><?php echo $display_name ?: __('Anonymous', 'wpcom');?></span>
                            </a>
                            <span><?php echo date(get_option('date_format'), strtotime($comment->comment_date)); ?></span>
                        </div>
                        <div class="comment-excerpt">
                            <p><?php comment_excerpt( $comment );?></p>
                        </div>
                        <p class="comment-post">
                            <?php _e('Comment on', 'wpcom');?> <a href="<?php echo get_permalink($comment->comment_post_ID); ?>" target="_blank"><?php echo get_the_title($comment->comment_post_ID);?></a>
                        </p>
                    </li>
                <?php endforeach;?>
            </ul>
        <?php
        else:
            echo '<p style="color:#999;font-size: 12px;text-align: center;padding: 10px 0;margin:0;">'.__('No comments', 'wpcom').'</p>';
        endif;
        $this->widget_end( $args );
        echo $this->cache_widget( $args, ob_get_clean(), 3600 );
    }
}

// register widget
function register_wpcom_comments_widget() {
    register_widget( 'WPCOM_comments_widget' );
}
add_action( 'widgets_init', 'register_wpcom_comments_widget' );

使用 WordPress 程序搭建博客或网站,默认查看 WordPress 的文字评论,点击评论者名字(如果留有网址或者链接的话),你会发现它直接在原窗口打开(直接跳到评论者留下的网站地址或者链接),而不是在新窗口打开,这样对博主站长和用户体验都不是很友好。文章源自惟康前行-https://www.wkqx.com/1399.html

一是对于我们博主来说不友好。从网站自身来以及网站seo角度来说,增加了网站的跳出率,会流失读者和访客。文章源自惟康前行-https://www.wkqx.com/1399.html

二是对于用户体验来说不友好。在跳转到另外的页面后,用户顺着链接点击下去,再想回到原来评论页面又要不断的点击浏览器的返回,无形中使用户体验度下降。文章源自惟康前行-https://www.wkqx.com/1399.html

那么,如何让 wordpress 评论者链接在新窗口中打开呢?文章源自惟康前行-https://www.wkqx.com/1399.html

在wordpress的 functions.php 文件中添加自定义函数来实现wordpress评论者的网站链接新窗口打开。代码如下:文章源自惟康前行-https://www.wkqx.com/1399.html

//wordpress评论作者链接新窗口打开

function dxia_autoblank($text) {
	$return = str_replace('<a', '<a target="_blank"', $text);
	return $return;
	}
add_filter('get_comment_author_link','dxia_autoblank');
文章源自惟康前行-https://www.wkqx.com/1399.html文章源自惟康前行-https://www.wkqx.com/1399.html
 
  • 本文由 diego 发表于2024年7月16日 20:48:38
  • 转载请务必保留本文链接:https://www.wkqx.com/1399.html
评论  5  访客  3  作者  2
    • 粽叶加米
      粽叶加米 1

      也可以直接在主题functions.php中通过widget_comments_args这个钩子来实现。

        • diego
          diego

          @ 粽叶加米 有具体的方法可以告知,谢谢。

            • 粽叶加米
              粽叶加米 1

              @ diego function xadmin($args) {
              $args[‘user_id’] = 0; //只显示id为0也就是访客的评论(不包含注册用户),或者用[‘author__not_in’] = array(1);直接排除用户id为1也就是博主评论,根据实际情况对应。
              return $args; //返回。
              }
              add_filter(‘widget_comments_args’, ‘xadmin’);
              xadmin是自定义函数自己取名,
              widget_comments_args钩子详见https://developer.wordpress.org/reference/hooks/widget_comments_args/

          • 搜维网
            搜维网 0

            学习了,回头试试看-

          匿名

          发表评论

          匿名网友