我想在标签页的单页上显示3个相关产品。我已经制作了这样的自定义自定义查询:
$postid = array(1,2,3);
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'post__in' => array_column($postid, 'ID'),
);
$loop = new WP_QUERY($args);
此查询也可以工作并执行3次。但在循环中我调用另一个模板
wc_get_template_part( 'content', 'single-product-meta-side' );
在content-single-product-meta-side.php中,$ post变量被重置并仅返回原始查询post变量。
global $product, $post;
echo $post_id = get_the_ID(); // old/original post id returns
我在while循环之后尝试setup_postdata( $post );
但没有任何反应。
任何想法都会出错。 另一个问题是如何设置全局$ product变量。
答案 0 :(得分:1)
函数wc_get_template_part
使用load_template
。最后,要求模板文件包含一些可用的全局变量,以确保WordPress环境在函数中可用:
global $posts, $post, $wp_did_header, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID;
因此,您要么使用上述全局变量,要么找到该文件并将其包含在您的范围内:
include(locate_template('single-product-meta-side.php'));//Don't forget to set the right path for your file.
我希望这会对你有所帮助。