在自定义帖子类型中排除特定帖子

时间:2021-09-12 作者:Josh Rodgers

我有一个非常简单的查询,以自定义帖子类型显示我的所有帖子:

<?php
    $page = get_page_by_title(\'Duck\');
    $args = array(
        \'post_type\' => \'sessions\',
        \'post__not_in\' => array($page->ID)
    );
    $query = new WP_Query( $args );
?>

<?php if ( $query->have_posts() ) { ?>
    <ul>
        <?php while ( $query->have_posts() ) { $query->the_post(); ?>
            <li>
                <?php the_title(); ?>
                <?php the_content(); ?>
            </li>
        <?php } ?>
    </ul>
<?php } ?>

<?php wp_reset_postdata(); ?>
我要做的是显示除"Duck" post,我通过它的名称获取它的ID-这通常不是问题,但查询仍然显示此帖子。我想我只是做得不对。

有人能帮我吗?我也在想exclude > $page->ID或者类似的东西-这是我在常规循环中要做的。。。只是不知道如何在自定义帖子类型中执行。

谢谢,乔希

1 个回复
最合适的回答,由SO网友:Buttered_Toast 整理而成

问题是get_page_by_title, 默认为post类型page 因此,您需要告诉它以正确的post\\u类型为目标。

按您的帖子类型sessions, 这就是你需要的。

get_page_by_title(\'Duck\', OBJECT, \'sessions\');
第二个参数是输出的类型,默认值是OBJECT,所以我也使用了它

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>