过滤WordPress标签不加载指定内容
之前博客里写了一些关于VPN和翻墙的文章,填写了一些包含翻墙和高速VPN的敏感字眼,而博客右边栏启用了云标签的功能,会自动进行加载标签,阿里云快照检测到有违规字眼就把域名拦截了,要求我进行整改,当时想着直接删除违规标签,但是又怕影响站点的稳定性,所以就写了一段过滤的代码,把包含违规字眼的标签屏蔽不显示。
实现思路:在标签加载获取后循环标签集合,然后逐一判断标签是否含有指定字眼,若包含则直接从标签集合中移除该标签。
文件位置:\wp-includes\category-template.php
关键代码:注意下方代码的加粗部分,把加粗部分加到上述文件的指定位置即可。
function wp_tag_cloud( $args = '' ) {
$defaults = array(
'smallest' => 8,
'largest' => 22,
'unit' => 'pt',
'number' => 45,
'format' => 'flat',
'separator' => "\n",
'orderby' => 'name',
'order' => 'RAND',
'exclude' => '',
'include' => '',
'link' => 'view',
'taxonomy' => 'post_tag',
'post_type' => '',
'echo' => true,
'show_count' => 0,
);
$args = wp_parse_args( $args, $defaults );
$tags = get_terms(
array_merge(
$args,
array(
'orderby' => 'count',
'order' => 'RAND',
)
)
); // Always query top tags.term_group.ASC
if ( empty( $tags ) || is_wp_error( $tags ) ) {
return;
}
foreach ( $tags as $key => $tag ) {
if ( 'edit' === $args['link'] ) {
$link = get_edit_term_link( $tag->term_id, $tag->taxonomy, $args['post_type'] );
} else {
$link = get_term_link( (int) $tag->term_id, $tag->taxonomy );
}
if ( is_wp_error( $link ) ) {
return;
}
$tags[ $key ]->link = $link;
$tags[ $key ]->id = $tag->term_id;
}
//屏蔽特殊标签
foreach ($tags as $key => $tag) {
if(strpos($tag->name,'翻墙')!==false)
{
unset($tags[$key]);
}
}
// Here's where those top tags get sorted according to $args.
$return = wp_generate_tag_cloud( $tags, $args );
/**
* Filters the tag cloud output.
*
* @since 2.3.0
*
* @param string|array $return Tag cloud as a string or an array, depending on 'format' argument.
* @param array $args An array of tag cloud arguments.
*/
$return = apply_filters( 'wp_tag_cloud', $return, $args );
if ( 'array' === $args['format'] || empty( $args['echo'] ) ) {
return $return;
}
echo $return;
}
版权声明:
作者:兴兴
文章:过滤WordPress标签不加载指定内容
链接:https://www.networkcabin.com/notes/1966
文章版权归本站所有,未经授权请勿转载。
作者:兴兴
文章:过滤WordPress标签不加载指定内容
链接:https://www.networkcabin.com/notes/1966
文章版权归本站所有,未经授权请勿转载。
THE END