分类-从页面上显示的文章格式中排除

时间:2014-10-20 作者:adam

我正在尝试设置分类法,以隐藏特定页面上的post\\U格式。

我已经创建了以下内容,可以阻止post\\u格式在页面上显示,但它也会将其隐藏在CMS的“Posts”页面中。有没有办法绕过这个问题?

    function exclude_campaigns( $query ) {
        if( $query->is_main_query() && $query->is_home() ) {
            $tax_query = array( array(
                \'taxonomy\' => \'post_format\',
                \'field\' => \'slug\',
                \'terms\' => array( \'post-format-link\' ),
                \'operator\' => \'NOT IN\',
            ) );
            $query->set( \'tax_query\', $tax_query );
        }
    }
    add_action( \'pre_get_posts\', \'exclude_campaigns\' );
更新的功能:

// Exclude post-format from one particular page
function exclude_campaigns( $query ) {
    // is_page() allows for page ID, page title or page slug
    if( $query->is_main_query() && $query->is_page(239) ) {
        $tax_query = array( array(
            \'taxonomy\' => \'post_format\',
            \'field\' => \'slug\',
            \'terms\' => array( \'post-format-link\' ),
            \'operator\' => \'NOT IN\',
        ) );
        $query->set( \'tax_query\', $tax_query );
    }
}
add_action( \'pre_get_posts\', \'exclude_campaigns\' );

2 个回复
SO网友:Courtney Ivey

如果您试图在一个特定页面上隐藏帖子格式,那么下面的函数应该可以工作。

<?php
// Exclude post-format from one particular page
function exclude_campaigns( $query ) {
    // is_page() allows for page ID, page title or page slug
    if( $query->is_main_query() && $query->is_page( INSERT_PAGE_ID_HERE ) ) {
        $tax_query = array(
            \'taxonomy\' => \'post_format\',
            \'field\' => \'slug\',
            \'terms\' => array( \'post-format-link\' ),
            \'operator\' => \'NOT IN\',
        );
        $query->set( \'tax_query\', $tax_query );
}
}
add_action( \'pre_get_posts\', \'exclude_campaigns\' );

SO网友:Pieter Goosen

pre_get_posts 更改的所有查询、后端和前端、新实例WP_Query 和默认的主查询。您应该使用pre_get_postsconditional tags.

此处最重要的条件标记有:

  • is_main_query() -> 这仅用于以主查询为目标,不包括的所有自定义实例WP_Query

  • is_admin() -> 非常重要的是,使用此条件,您只能以后端查询为目标。为此,您需要负片!is_admin() 因为您需要以前端为目标,而不是后端(管理端)

其余条件可用于针对特定页面。你需要检查你需要什么,并根据需要应用它。

if( $query->is_main_query() && $query->is_home() ) {
应该成为

if( !is_admin() && $query->is_main_query() && $query->is_home() ) {
只会将您的更改应用于主页上的前端主查询

我相信is_page() 在这里是不合适的。您需要检查这是什么类型的页面,然后相应地使用正确的条件标记。例如,如果这是主页,请使用is_home(), 或者,如果是类别页面,请使用is_category().

结束

相关推荐

获取Term_id-Taxonomy元数据插件

我一直在到处找,但找不到任何方法来实现这一目标。我正在使用Taxonomy Metadata plugin 我正在尝试显示创建的自定义元数据。为此,我使用:get_term_meta($term_id, \'my_metadata\', TRUE);. 问题是我找不到获取term\\u id的方法。我在循环中的模板页中。以下是我尝试过的:$term = get_term_by(\'name\', \'name\', \'custom_taxonomy\'); $termid = $term->