如何在另一个单品页面显示相关产品价格

问题描述 投票:0回答:1

我想在单个产品页面上显示一些自定义选择的相关产品。我正在使用带有“关系”字段的 ACF 插件。我正在尝试此代码,但它返回当前产品价格,而不是相关产品价格(在 foreach 中):

<?php 
   $product = new WC_Product(get_the_ID()); 
  echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>

该代码在静态页面上运行良好,并且少数相关产品的价格是正确的,但在单页产品上则不然。我以为这部分 获取_ID() 处理特定帖子的定位?

更新:

这是我的整个代码,包括 ACF 关系字段:

<?php 
    $posts = get_field('related_set_1');
    if( $posts ): ?>
<?php foreach( $posts as $p): ?>
    <li>
        <a href="<?php echo get_permalink( $p->ID ); ?>">
            <?php 
              echo get_the_post_thumbnail( $p->ID, '175x100' )
                    ?>
                <div style="overflow:hidden">
                    <h4><?php echo $p->post_title; ?></h4>
                    <p class="price">
                        <?php 
                        global $post;
                        $product = new WC_Product($post->ID); 
                        echo wc_price($product->get_price_including_tax(1,$product->get_price()));
                        ?>
                    </p>
                    <p class="link">View now</p>
                </div>
        </a>
    </li>
    <?php endforeach; ?>
        <?php endif; ?>

我还添加了全局$post;来自下面的回复,但我仍然有相同的输出:显示的价格是放置代码的页面上产品的价格,而不是“相关项目”网格中的产品。

我在过滤器函数的functions.php中使用它,如果这有什么区别吗?

add_filter( 'woocommerce_after_single_product_summary', 'custom_related_products' );
function custom_related_products() { ?>
.... (the code above here)
<php? }

一切都很好,除了价格。

wordpress woocommerce advanced-custom-fields
1个回答
0
投票

get_the_ID()
仅在存在 WordPress 循环时才有效。 WordPress 循环的使用取决于您正在使用的主题。

对于单个帖子,主题很可能没有使用 WordPress 循环。 更可靠的方法是调用

global $post
,然后通过
$post->ID
访问帖子 ID。

<?php 
global $post;
$product = new WC_Product($post->ID); 
echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>
© www.soinside.com 2019 - 2024. All rights reserved.