价格没有显示在相关产品列表中来自WooCommerce的常规代码

时间:2015-08-21 11:31:39

标签: php wordpress woocommerce

我要做的是在边栏中的相关产品列表中显示产品标题以外的价格......但由于某种原因它不起作用。

是的,我搜索了StackOverflow存档和Google,找到了明显的答案:

<?php echo $product->get_price_html(); ?>

但是这个在我的代码结构中不起作用:

<h4>Related products</h4>
   <ul class="prods-list">
     <?php while ( $products->have_posts() ) : $products->the_post(); ?>
        <li>
          <a href="<?php the_permalink(); ?>" target="_blank">
           <?php do_action( 'woocommerce_before_shop_loop_item_title' ); ?>
           <span><?php the_title(); ?></span>
          /a>
          </li>
          <?php endwhile; wp_reset_postdata(); ?>
  </ul>

我在这里做错了什么?我尝试在标题范围之后添加该代码,但它不会返回任何内容。

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试从Post对象上的Product类调用方法。如果没有在它之前看到代码,我无法确定,但看起来$ products变量设置为WP_Query()的实例。如果是这种情况,那么你需要做两件事:

  1. 使用当前的帖子ID
  2. 获取Product对象的实例
  3. 在Product对象上调用get_price_html()方法
  4. 你可以更简洁地写出来,但我会逐一解释它,以解释每件事情的作用。您的代码应如下所示:

    <h4>Related products</h4>
      <ul class="prods-list">
        <?php while ( $products->have_posts() ) : $products->the_post(); ?>
          <li>
            <a href="<?php the_permalink(); ?>" target="_blank">
              <?php do_action( 'woocommerce_before_shop_loop_item_title' ); ?>
              <?php
    
                // Get the ID for the post object currently in context
                $this_post_id = get_the_ID();
    
                // Get an instance of the Product object for the product with this post ID
                $product = wc_get_product($this_post_id);
    
                // Get the price of this product - here is where you can 
                // finally use the function you were trying
                $price = $product->get_price_html();
    
              ?>
              <span><?php the_title(); ?></span>
    
              <?php
                // Now you can finally echo the price somewhere in your HTML:
                echo $price;
              ?>
    
            </a>
          </li>
        <?php endwhile; wp_reset_postdata(); ?>
      </ul>