无法将特定帖子从自定义帖子类型的循环中排除

时间:2015-02-07 作者:echoashu

我有一个自定义的帖子类型(来自前一个开发人员安装的主题),下面是检索帖子并显示它们的循环代码。

<?php
// Counter
$post_count = 1;

// Query
$gp_query_args = array(
    \'post_type\'         => \'event\',

    //EXCLUDE Events try by me
    \'post__not_in\' => array(\'1646\'),
    // exclude event try code block ends

    \'meta_key\'          => \'gp_event_date\',
    \'meta_value\'        => date(\'Y/m/d\'),
    \'meta_compare\'      => \'>=\',
    \'orderby\'           => \'meta_value\',
    \'order\'             => \'ASC\',
    \'posts_per_page\'    => -1

);
$gp_query = NULL;
$gp_query = new WP_Query($gp_query_args);
我想排除某些事件(自定义post类型的post,从循环中),如您所见,我尝试使用\'post__not_in\' => array(\'1646\'), 哪里1646 是编辑自定义帖子时看到的帖子id。所以我猜这是通用的帖子id,而不是自定义帖子类型特定的id。但不管怎样,帖子并没有被排除:-(

我做错了吗??

Edit1:

我在github上找到了一个与我的主题结构完全相似的[repository on github](edit3下面的链接)。我不知道主题名称,所以我不确定这是否与我正在研究的网站上的主题相同。

根据以下建议编辑2

我做到了,重命名了模板事件。php(用于显示事件列表的我的模板文件)到archive-event.php

并放置函数snippet from here 在功能中。我的主题的php。

但我还不能排除具有指定ID的帖子。

Edit3

正如这里所问的,github存储库的链接与我的主题完全相同。

Github链接:

2 个回复
最合适的回答,由SO网友:Brad Dalton 整理而成

只要您为CPT归档使用正确的条件标记,就可以从函数文件中执行类似的操作:

function exclude_single_post_cpt($query) {
  if (is_post_type_archive(\'event\') && $query->is_main_query() && !is_admin() ) {
    $query->set(\'post__not_in\', array(1646));
  }
}

add_action(\'pre_get_posts\', \'exclude_single_post_cpt\');

SO网友:Khursheed Alam

您应该重命名文件archive-event.php 而不是template-event.php 按照WordPress主题层次结构。这个template-event.php (template-customposttypename.php) 用于将单个事件的内容显示为single.php 正在努力显示帖子内容的内容。

您也可以通过使用任何页面模板来使用上述代码。我希望它能起作用。

结束

相关推荐

函数使用GET_POSTS(),当从函数调用时Tax_Query不起作用。php

我想获得分类法“类型”中所有“带”的数组,然后在其他函数等中使用该数组utilities.php 文件,我require() 在里面functions.php 它有以下函数定义,并在之后立即调用:function get_all_bands() { $bands = get_posts(array( \'post_type\' => \'model\', \'posts_per_page\' => -1,