我有一个自定义的帖子类型(来自前一个开发人员安装的主题),下面是检索帖子并显示它们的循环代码。
<?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链接:
最合适的回答,由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\');