最近有个人找我要一段 WordPress 的短代码,需要在当前文章内引用评论中的相关数据
强大的 WordPress 当然是可以做到的,自身自带函数就可以获取到相关信息
Demo 这里就不放了,我站点用不到,大概说一下实现的过程
使用自带函数,检索评论列表
get_comments( string|array $args = '' )
评论列表可以是整个博客或着一篇文章,支持的参数也有很多,比如post_id
、user_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
中的
🙂 真香
想学下调用文章块,输入链接自动转换那种,不知道有没有这方面干货。
@值品 隔壁就有,WordPress 通过短代码在文章或评论中显示站内指定文章内容:https://www.ilxtx.com/insert-post-through-post-id.html
来点干货,春笋小哥!
@橘子书 给你说Swoole吗
这个学习下,有时候引用评论还是不错的!