GET_POSTS显示当前帖子,而不是带有参数的已定义帖子

时间:2021-01-26 作者:Faruk rıza

我想显示已定义的帖子,但get\\u posts显示当前帖子,而不使用args中的定义。为什么,如何解决?get\\u posts和wp query之间有什么区别?谢谢

add_action( \'template_redirect\', \'check_shop\' );
function check_shop()
{
    if (is_shop() ) {
            $args1 = array(
                \'post_author\' => \'admin\',
                \'post_type\' => \'page\',
            );
            $post_types1 = get_posts( $args1, \'objects\' );
            foreach ($post_types1 as $post_type1) {
                setup_postdata( $post_type1 );
                if (!empty($post_type1->post_content)) {
                    add_action(\'woocommerce_before_shop_loop_item_title\', function() {
                        global $post_type1;
                        the_title();
                        echo get_the_title($post_type1->ID);
                        echo $post_type1;
                        echo $post_type1->post_content;
                        echo "denemeee yazısı";
                    }, 1);
                }
            }
        wp_reset_postdata();
    }
}

1 个回复
SO网友:Jacob Peattie

As documented:

setup_postdata()not 分配全局$post 变量,所以您自己做这件事很重要。如果不这样做,则会导致使用上述任何全局变量的挂钩出现问题$post 全球,因为他们将指的是单独的性质。

因此,您需要这样做:

global $post; // This...

foreach ($post_types1 as $post_type1) {
    $post = $post_type1; // ...and this.

    setup_postdata( $post_type1 );

    // etc.
}

wp_reset_postdata();

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post