0

我想问一下woo-commerce特色产品功能。我在 function.php 中为这样的特色产品创建:

function get_featured_product(){
  $tax_query[] = array(
    'taxonomy' => 'product_visibility',
    'field'    => 'name',
    'terms'    => 'featured',
    'operator' => 'IN',
);

$args = array(
    'post_type'           => 'product',
    'post_status'         => 'publish',
    'ignore_sticky_posts' => 1,
    'posts_per_page'      => $products,
    'orderby'             => $orderby,
    'order'               => $order == 'asc' ? 'asc' : 'desc',
    'tax_query'           => $tax_query
);

$query = new WP_Query( $args );
  ob_start();
  ?>
  <div class="row">
    <div class="col-md-12">
      <div class="row">
        <?php
          while ( $query->have_posts() ) : $query->the_post(); global $product; ?>   
            <div class="col-md-4">
              <?php 
              if ( has_post_thumbnail( $query->post->ID ) ) 
                echo get_the_post_thumbnail( $query->post->ID, 'full' ); 
              else 
                echo '<img src="' . woocommerce_placeholder_img_src() . '" alt="Placeholder" width="65px" height="115px" />'; 
            ?>
            <div class="content" style="padding: 0 20px;">
            <h3><?php the_title(); ?></h3>
            <p>
              <?php echo $product->get_price_html(); ?>          
            </p>
            <div class="row">
              <div class="col-xs-3 col-md-3">
                <a href="#"><img src="http://localhost/wellliveflorist/wp-content/uploads/2018/04/compare-pink.png" width="25" heigh="25" style="float: left;"></a>
              </div>
              <div class="col-xs-6 col-md-6" style="text-align: center;">
              <?php 
                  woocommerce_template_loop_add_to_cart( $loop->post, $product );
              ?>
              </div>
              <div class="col-xs-3 col-md-3">
              [ti_wishlists_addtowishlist]
              </div>
            </div>
            </div>
            </div>
        <?php 
            endwhile;
            ?>
      </div>
    </div>
  </div><?php
    return ob_get_clean();
    wp_reset_query();
}

add_shortcode('featured_product', 'get_featured_product');

它的工作原理和显示如下: 前端

但是当我点击心形图标(愿望清单)时,只会得到一个 id,换句话说,愿望清单按钮只会得到 1 个 id,无论你在另一个产品中点击什么,仍然会得到错误的 id 产品。有谁知道,我应该改变什么?

4

3 回答 3

0

看起来您正在使用一个插件来处理您的愿望清单功能。一切似乎都是在产品的实际循环中设置的。

然而,愿望清单短代码不起作用的原因是因为我认为需要使用不同的短代码。如果您在此处访问他们的文档页面:https ://templateinvaders.com/documentation/ti-woocommerce-wishlist/widgets-and-shortcodes/

根据他们的文档,如果您想为特定产品添加自定义添加到愿望清单按钮,则产品 ID 必须与它一起使用。由于您处于循环中,因此您可以在此短代码中输出产品 ID:

[ti_wishlists_addtowishlist product_id="999" variant_id="0"]

注意:如果您的产品不是可变产品,则不必使用变体 ID

于 2018-04-11T03:15:16.840 回答
0

在此代码短代码上发现了问题...

function shortcode( $atts = array() ) {
    global $product;
    $default = array(
        'product_id'   => 0,
        'variation_id' => 0,
        'loop'         => 'no',
    );
    if ( $product && is_a( $product, 'WC_Product' ) ) {
        $default['product_id']   = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->id : ( $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ) );
        $default['variation_id'] = ( version_compare( WC_VERSION, '3.0.0', '<' ) ? $product->variation_id : ( $product->is_type( 'variation' ) ? $product->get_id() : 0 ) );
    }
    $atts = shortcode_atts( $default, $atts );
    ob_start();
    if ( 'yes' === $atts['loop'] ) {
        $this->is_loop = true;
        $this->htmloutput( $atts, true );
        $this->is_loop = false;
    } else {
        $this->htmloutput( $atts, true );
    }
    return ob_get_clean();
}

不向它传递参数ti_wishlists_addtowishlist就是使用全局变量$product。这不在你的循环中。尝试更改[ti_wishlists_addtowishlist]
[ti_wishlists_addtowishlist product_id="<?php echo $query->post->ID; ?>"]

于 2018-04-11T03:16:00.617 回答
-1

使用简码 [ti_wishlists_addtowishlist product_id="id; ?>"]

于 2018-04-11T03:52:35.763 回答