为自定义帖子类型排除当前帖子

时间:2017-02-28 作者:Isak Pontus

我需要的是:显示除当前帖子之外的任意帖子,用于自定义帖子类型Question

在以下代码中,排除不起作用。它只显示任何帖子,包括当前帖子。

<?php
    $my_query = new WP_Query( array(\'showposts\' => \'8\', \'post_type\' => \'question\', \'post__not_in\' => array( $post->ID ), \'orderby\' => \'rand\'));
    while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title() ?></a><br>
<?php endwhile; ?>
如果我更改Question 未来Page, 它适用于Page。如果删除Question, 它适用于Post。

我想如果我想让它适用于自定义帖子类型,那一定是我错过了什么

Update:

之前我写过Question 现在更改为question, 但结果仍然相同

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

您应该使用get_queried_object()get_queried_object_id() 获取当前自定义帖子的ID。IMOget_queried_object() 在这里是一个更好的选择,因为您也可以有条件地检查帖子类型。试试这个

function wpse258217_random_posts() {

    $obj = get_queried_object();

    if ( $obj->post_type === \'question\' ) {
        $postid = $obj->ID;

        $my_query = new WP_Query( array(\'showposts\' => \'8\', \'post_type\' => \'question\', \'post__not_in\' => array( $postid ), \'orderby\' => \'rand\'));

        //Execute the loop here
    }

}

相关推荐