WordPress短代码怎么在当前文章内引用评论

cera cera

最近有个人找我要一段 WordPress 的短代码,需要在当前文章内引用评论中的相关数据

强大的 WordPress 当然是可以做到的,自身自带函数就可以获取到相关信息

Demo 这里就不放了,我站点用不到,大概说一下实现的过程

使用自带函数,检索评论列表

get_comments( string|array $args = '' )

评论列表可以是整个博客或着一篇文章,支持的参数也有很多,比如post_iduser_id等等,自带排序

具体的解释可以查看官方文档,这里就不详细介绍了

实现

功能实现就行,直接贴代码,看注释

// 引用评论
function fa_insert_comments( $atts, $content = null ){
    // 将输入的短代码的属性值和短代码默认属性值合并
    extract( shortcode_atts( array('id' => ''), $atts ) );
    // 如果不设置文章id,默认获取当前文章id
   if (empty($atts)) $id = get_the_ID();
   // 设置函数参数,排序
    $query_args  = array('post_id'=> $id,'orderby' => 'comment_date_gmt','order'=>'ASC');
    // 调用函数获取信息
    $fa_comments = get_comments($query_args);
    // 数据为空直接返回
    if ( empty($fa_comments) ) return;
    // 拼接html数据 class方便自定义样式 可以不加
   $content = '<div class="comment-mixtapeEmbed"><ol>';
    foreach ($fa_comments as $key => $fa_comment) {
        // 正则匹配获取评论中的链接,当作a链接。 可以不加,这个是别人的需求
      $isMatched = preg_match_all('/http(s)?:\/\/.+/', $fa_comment->comment_content, $matches);
      if ($isMatched) {
          // 切割掉匹配到的链接部分
         $tmp = str_replace($matches[0][0], "", $fa_comment->comment_content);
         // 拼接html
         $content .='<li><a target="_black" href="'.$matches[0][0].'">'. $tmp . '</a></li>';
      }
    }
   $content .= '</ol></div>';
    // 返回数据
    return $content;
}
add_shortcode('fa_insert_comments','fa_insert_comments');

调用

写了不能调用那不傻逼了吗?在文章中调用:

[fa_insert_comments]

或者

[fa_insert_comments id=666]

666 为文章ID,默认当前文章ID

前提是在5.0之前的编辑器中使用,5.0之后的是Gutenberg块编辑器,这个编辑器这么玩都不知道,已经是禁用状态了

使用如下代码禁用掉

//禁止 WordPress5.0 使用 Gutenberg 块编辑器
add_filter('use_block_editor_for_post', '__return_false');
remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );

以上function代码都是添加在function.php中的

cera cloudiplc tengxunyun

相关推荐