WordPress短代碼怎麼在當前文章內引用評論
最近有個人找我要一段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
中的