Undefined $post in wp_query

时间:2019-07-31 作者:Freddy

我有一个自定义的帖子类型,叫做resources. 在它的帖子模板上,我有一个小部件,它将显示具有相同标签的帖子,也就是说,如果我在一篇文章帖子上,小部件将显示其他文章。为此,我有以下查询:

<?php

$args = array(
    \'post_type\' => \'resources\',
    \'category__in\'   => wp_get_post_categories($post->ID ),
    \'posts_per_page\' => 3,
    \'post__not_in\'   => array($post->ID )
);
$relatedPosts = new WP_Query( $args );

     if( $relatedPosts->have_posts() ) { 

        while( $relatedPosts->have_posts() ) {
            $relatedPosts->the_post(); ?>

            <div class="content">test</div>

        <?php }

        wp_reset_postdata();
    }

?>
但是接收Undefined variable: post 错误。如何避免出现此错误?

1 个回复
SO网友:Jacob Peattie

获取当前正在查看的帖子最可靠的方法是global $post 变量相反,您应该首先检查is_singular(), 然后使用get_queried_object() 获取post对象,或get_queried_object_id() 只需获取ID即可。

if ( ! is_singular() ) {
    return;
}

$post_id = get_queried_object_id();

$args = array(
    \'post_type\'      => \'resources\',
    \'category__in\'   => wp_get_post_categories( $post_id ),
    \'posts_per_page\' => 3,
    \'post__not_in\'   => array( $post_id )
);

// etc.

相关推荐

主题定制--当使用php变量时,如何在外部存储javascript?

EDIT: Complete re-write在过去的几周里,我一直在为我的主题开发一个自定义扩展。这是我第一次用Wordpress“开发”。所有的工作都很好,我对结果的功能很满意,尽管它需要一些整理。我希望将我的js函数移到一个外部文件-自定义。js。原始格式:main-block.php$custom1 = $custom_meta[\'custom1\']; <form name=\"customForm\"> Validatio