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的分类
大概排除法就这些了,如果还满足不了你就自己折腾吧