如何在主页上隐藏特定帖子,但只有在从主页上显示的过滤条中过滤类别时才应该可见

时间:2018-01-16 11:03:24

标签: javascript php wordpress

我有一个WordPress网站。我的网站上有5-6个类别。其中一个是过期交易,我不想在主页上看到,但同时,如果有人从过滤条中点击该类别,那么只有与该类别相关的帖子应该是可见的。

网址 - https://saashunter.com/

我希望在主页过期后隐藏过期交易的帖子,而不是删除它们,我想要隐藏,只有当类别从位于帖子上方的过滤条上过滤后才能看到它们主页。

1 个答案:

答案 0 :(得分:0)

  1. 通过仪表板 - >帖子 - >类别将鼠标悬停在“已过期的交易”上以标识其tag_ID,例如17
  2. 创建(将17更改为上面标识的类别ID),上传并激活以下插件(或将代码添加到现有网站功能插件)

    <?php
    /*
    Plugin Name: Theme independent functions
    Description: Not tested
    Version: 1.0
    */
    function exclude_category( $query ) {
        if ( $query->is_home() && $query->is_main_query() ) {
            $query->set( 'cat', '-17' );
        }
    }
    add_action( 'pre_get_posts', 'exclude_category' );
    ?>
    
  3. 任何类别选择窗口小部件仍应有效,并仍显示已排除类别的帖子。您尚未确定菜单栏过滤器代码,但您可以对过期交易类别的链接进行硬编码,例如<a href="/?cat=17">etc并根据需要重写WP URL。

  4. 加成:

    用于排除单独指定的帖子的代码,其中为具有例如条目的帖子设置了自定义字段“no_recent_post_list” “TRUE”。

    function my_exclude_post($query) {
       if ( $query->is_main_query() && $query->is_home() ) {
            $myargs = array(
                array(
                  'key' => 'no_recent_post_list',
                  'value'=>false, // ONLY REQD PRE 3.9
                  'compare' => 'NOT EXISTS'
                )
             );
             $query->set( 'meta_query', $myargs);
       }
     }
     add_action( 'pre_get_posts', 'my_exclude_post');
    

    上面第一个示例代码的信用:Wordpress Codex但我丢失了链接lol。