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

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

wordpress网站排除某指定分类系列-黄月文个人博客

首页排除某些文章形式:

  1. // WordPress 首页排除某些文章形式
  2. (Post Formats)
  3. function exclude_post_formats_from_homepage( $query ) {
  4. if( $query->is_main_query() && $query->is_home() ) { //判断首页主查询
  5. $tax_query = array( array(
  6. ‘taxonomy’ => ‘post_format’,
  7. ‘field’ => ‘slug’,
  8. ‘terms’ => array(
  9. //请根据需要保留要排除的文章形式
  10. ‘post-format-aside’,
  11. ‘post-format-audio’,
  12. ‘post-format-chat’,
  13. ‘post-format-gallery’,
  14. ‘post-format-image’,
  15. ‘post-format-link’,
  16. ‘post-format-quote’,
  17. ‘post-format-status’,
  18. ‘post-format-video’
  19. ),
  20. ‘operator’ => ‘NOT IN’,
  21. ) );
  22. $query->set( ‘tax_query’, $tax_query );
  23. }
  24. }
  25. add_action( ‘pre_get_posts’, ‘exclude_post_formats_from_homepage’ );
  26. // WordPress 首页排除某些文章形式结束

首页排除特定分类文章:

  1. //首页排除特定分类文章
  2. function exclude_category_home( $query ) {
  3. if ( $query->is_home ) {//是否首页
  4. $query->set( ‘cat’, ‘-2,-10,-13’ ); //排除的指定分类id
  5. }
  6. return $query;
  7. }
  8. add_filter( ‘pre_get_posts’, ‘exclude_category_home’ );
  9. //首页排除特定分类文章结束
  10. 搜索结果排除某些分类的文章:
  11. //搜索结果排除某些分类的文章
  12. function Bing_search_filter_category( $query) {
  13. if ( !$query->is_admin && $query->is_search) {
  14. $query->set(‘cat’,’-2,-10,-13′); //分类的ID,前面加负号表示排除;如果直接写ID,则表示只在该ID中搜索
  15. }
  16. return $query;
  17. }
  18. add_filter(‘pre_get_posts’,’Bing_search_filter_category’);
  19. //搜索结果排除某些分类的文章结束
  20. 搜索结果排除所有页面:
  21. //搜索结果排除所有页面
  22. function search_filter_page($query) {
  23. if ($query->is_search) {
  24. $query->set(‘post_type’, ‘post’);
  25. }
  26. return $query;
  27. }
  28. add_filter(‘pre_get_posts’,’search_filter_page’);
  29. //搜索结果排除所有页面结束

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

  1. //在Feed输出中排除某些分类
  2. function exclude_cat_feed($query) {
  3. if(is_feed()) {
  4. $query->set(‘cat’,’-2,-10,-13′); //排除ID为 1 的分类
  5. return $query;
  6. }
  7. }
  8. add_filter(‘pre_get_posts’, ‘exclude_cat_feed’);
  9. //在Feed输出中排除某些分类结束

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

  1. “上一篇”大概在1780行
  2. function previous_post_link( $format = ‘« %link’, $link = ‘%title’, $in_same_term = false, $excluded_terms = ‘2’, $taxonomy = ‘category’ ) {
  3. echo get_previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy );
  4. }//排除ID为2的分类
  5. “下一篇”大概在1812行
  6. function next_post_link( $format = ‘%link »’, $link = ‘%title’, $in_same_term = false, $excluded_terms = ‘2’, $taxonomy = ‘category’ ) {
  7. echo get_next_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy );
  8. }//排除ID为2的分类

大概排除法就这些了,如果还满足不了你就自己折腾吧

冰冰资源网免费提供各种商业源码下载。
冰冰资源网 » wordpress网站排除某指定分类系列

冰冰资源网_PHP秘籍__微信小程序_PHP网站源码_免费下载,活动期间开通年费会员最低仅需29元

交流QQ群:196268283

立即查看 了解详情