wordpress网站排除某指定分类系列

文章目录
[隐藏]

wordpress

有很多朋友的wordpress网站不想某些分类不在首页/搜索页/文章形式以级feed输出。还有一个你不知道的,就是在文章页面“下一篇”“上一篇”排除某些分类。wordpress嘛都是喜欢折腾。

首页排除某些文章形式:

// WordPress 首页排除某些文章形式
(Post Formats)
function exclude_post_formats_from_homepage( $query ) {
if( $query->is_main_query() && $query->is_home() ) { //判断首页主查询
$tax_query = array( array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array(
//请根据需要保留要排除的文章形式
'post-format-aside',
'post-format-audio',
'post-format-chat',
'post-format-gallery',
'post-format-image',
'post-format-link',
'post-format-quote',
'post-format-status',
'post-format-video'
),
'operator' => 'NOT IN',
) );
$query->set( 'tax_query', $tax_query );
}
}
add_action( 'pre_get_posts', 'exclude_post_formats_from_homepage' );
// WordPress 首页排除某些文章形式结束

首页排除特定分类文章:

//首页排除特定分类文章
function exclude_category_home( $query ) {
if ( $query->is_home ) {//是否首页
$query->set( 'cat', '-2,-10,-13' ); //排除的指定分类id
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
//首页排除特定分类文章结束

搜索结果排除某些分类的文章:

//搜索结果排除某些分类的文章
function Bing_search_filter_category( $query) {
if ( !$query->is_admin && $query->is_search) {
$query->set('cat','-2,-10,-13'); //分类的ID,前面加负号表示排除;如果直接写ID,则表示只在该ID中搜索
}
return $query;
}
add_filter('pre_get_posts','Bing_search_filter_category');
//搜索结果排除某些分类的文章结束

搜索结果排除所有页面:

//搜索结果排除所有页面
function search_filter_page($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','search_filter_page');
//搜索结果排除所有页面结束

在Feed输出中排除某些分类:

//在Feed输出中排除某些分类
function exclude_cat_feed($query) {
if(is_feed()) {
$query->set('cat','-2,-10,-13'); //排除ID为 1 的分类
return $query;
}
}
add_filter('pre_get_posts', 'exclude_cat_feed');
//在Feed输出中排除某些分类结束

“下一篇”“上一篇”排除某些分类

在根目录打开wp-includes/link-template.php在$excluded_terms = ‘2’,填入你想排除的分类ID。

“上一篇”大概在1780行

function previous_post_link( $format = '« %link', $link = '%title', $in_same_term = false, $excluded_terms = '2', $taxonomy = 'category' ) {
echo get_previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy );
}//排除ID为2的分类

“下一篇”大概在1812行

function next_post_link( $format = '%link »', $link = '%title', $in_same_term = false, $excluded_terms = '2', $taxonomy = 'category' ) {
echo get_next_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy );
}//排除ID为2的分类

大概排除法就这些了。

以上部分整理自黄月文个人博客。

wordpress获取分类ID

将鼠标停在“编辑”处即可看到如下图地址,矩形选中部分即为分类ID,IE浏览器下也可以右键属性查看地址。

wordpress获取分类ID
wordpress获取分类ID



分享

发表评论