wordpress网站排除某指定分类系列
有很多朋友的wordpress网站不想某些分类不在首页/搜索页/文章形式以级feed输出。还有一个你不知道的,就是在文章页面“下一篇”“上一篇”排除某些分类。wordpress嘛都是喜欢折腾。
[t]首页排除某些文章形式:[/t]
// 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 首页排除某些文章形式结束
[t]首页排除特定分类文章:[/t]
//首页排除特定分类文章
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' );
//首页排除特定分类文章结束
[t]搜索结果排除某些分类的文章:[/t]
//搜索结果排除某些分类的文章
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');
//搜索结果排除某些分类的文章结束
[t]搜索结果排除所有页面:[/t]
//搜索结果排除所有页面
function search_filter_page($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','search_filter_page');
//搜索结果排除所有页面结束
[t]在Feed输出中排除某些分类:[/t]
//在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输出中排除某些分类结束
[t]“下一篇”“上一篇”排除某些分类[/t]
在根目录打开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的分类
大概排除法就这些了。
以上部分整理自黄月文个人博客。
[t]wordpress获取分类ID[/t]
将鼠标停在“编辑”处即可看到如下图地址,矩形选中部分即为分类ID,IE浏览器下也可以右键属性查看地址。
[caption id="attachment_1797" align="alignnone" width="845"] wordpress获取分类ID[/caption]