如何使用php函数而不是默认的WP函数从主页中排除类别?

我为联盟营销业务购买了 WordPress 主题。我的网站上有 1000 多家商店,因此主页上有数百张优惠券。我只需编写一个短代码来获取所有优惠券,它们就开始出现在主页上。所有优惠券都基于不同的类别。


如何从主页中排除一些优惠券,只有当我们可以根据 ID 从主页中排除某些类别时才有可能。


我谷歌了很多次,但每次我都发现“pre_get_posts”函数可以这样做。但就我而言,它根本不起作用。代码如下


 function exclude_category_home( $query ) {

            if ( $query->is_home ) {

            $query->set( 'cat', '-5' );

            }

            return $query;

            }

        add_filter( 'pre_get_posts', 'exclude_category_home' );

通过此代码,我试图排除所需的类别。我还尝试以不同的方式修改上面的代码,但我的解决方案/想法都没有奏效。我认为上述代码不起作用的原因是该功能仅适用于仪表板上“帖子”下的默认“类别”选项。我的类别来自仪表板上的另一个选项,即“优惠券”->“优惠类别”。


http://img2.mukewang.com/61a0cb580001ba1405690251.jpg

可能是也可能不是,我需要以一种可以选择我期望的类别的方式修改上述功能。但由于我缺乏 PHP 知识,所以我不知道该怎么做以及如何做?


我被困在这里,希望能得到专家的帮助。


提前致谢


明月笑刀无情
浏览 148回答 2
2回答

偶然的你

试试这个代码。if(is_home() || is_front_page()){    $args_active_coupons['tax_query'][] = array(     'taxonomy' => 'offer_categories',     'field' => 'id',     'terms' => array(214),     'operator' => 'NOT IN',     );}

呼如林

如果要对所有排除的类别进行硬编码,则必须将类别 ID 加上 (-) 前缀。例如function exclude_category_home( $query ) {&nbsp; &nbsp; if ( $query->is_home ) {&nbsp; &nbsp; $query->set( 'cat', '-<CAT_ID>, -<CAT_ID>, -<CAT_ID>' );&nbsp; &nbsp; }&nbsp; &nbsp; return $query;}add_filter( 'pre_get_posts', 'exclude_category_home' );此处:CAT_ID 应排除类别 id。在另一种方式中,您可以使用插件:https : //wordpress.org/plugins/ultimate-category-excluder/
打开App,查看更多内容
随时随地看视频慕课网APP