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 wordpress获取分类ID[/caption]

添加新评论