如何在另一个单品页面显示相关商品价格
How to display related product price on another single product page
我想在自定义挑选的单个产品页面上显示一些相关产品。我在 Relations 字段中使用 ACF 插件。我正在尝试此代码,但它 returns 当前产品价格,而不是相关产品价格(在 foreach 中):
<?php
$product = new WC_Product(get_the_ID());
echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>
该代码在静态页面上运行良好,少数相关产品的价格是正确的,但在单页产品上则不正确。我以为那部分
get_the_ID()
处理特定 post?
的定位
更新:
这是我的全部代码,包括 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; ?>
我还添加了 global $post;来自下面的回复,但我仍然有相同的输出:显示的价格是放置代码的页面上的产品价格,而不是 'related items' 网格中的产品价格。
而且我在 functions.php 的过滤函数中使用了这个,是否有任何区别?
add_filter( 'woocommerce_after_single_product_summary', 'custom_related_products' );
function custom_related_products() { ?>
.... (the code above here)
<php? }
一切都很好,除了价格。
get_the_ID()
仅在存在 WordPress 循环时有效。 WordPress 循环的使用取决于您使用的主题。
对于单个 post,主题很可能没有使用 WordPress 循环。
一种更可靠的方法是调用 global $post
,然后通过 $post->ID
访问 post ID。
<?php
global $post;
$product = new WC_Product($post->ID);
echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>
我想在自定义挑选的单个产品页面上显示一些相关产品。我在 Relations 字段中使用 ACF 插件。我正在尝试此代码,但它 returns 当前产品价格,而不是相关产品价格(在 foreach 中):
<?php
$product = new WC_Product(get_the_ID());
echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>
该代码在静态页面上运行良好,少数相关产品的价格是正确的,但在单页产品上则不正确。我以为那部分 get_the_ID() 处理特定 post?
的定位更新:
这是我的全部代码,包括 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; ?>
我还添加了 global $post;来自下面的回复,但我仍然有相同的输出:显示的价格是放置代码的页面上的产品价格,而不是 'related items' 网格中的产品价格。
而且我在 functions.php 的过滤函数中使用了这个,是否有任何区别?
add_filter( 'woocommerce_after_single_product_summary', 'custom_related_products' );
function custom_related_products() { ?>
.... (the code above here)
<php? }
一切都很好,除了价格。
get_the_ID()
仅在存在 WordPress 循环时有效。 WordPress 循环的使用取决于您使用的主题。
对于单个 post,主题很可能没有使用 WordPress 循环。
一种更可靠的方法是调用 global $post
,然后通过 $post->ID
访问 post ID。
<?php
global $post;
$product = new WC_Product($post->ID);
echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?>