WordPress Woocommerce精选产品功能与愿望清单

时间:2018-04-11 03:06:32

标签: php wordpress woocommerce wordpress-shortcode

我想问一下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');

它的工作原理如下: frontend

但是当我点击心脏图标(心愿单)时只获得一个身份证,换句话说,心愿单按钮只能获得1个身份证,无论你点击另一个产品还是错误的身份证产品。 有谁知道,我应该改变什么?

3 个答案:

答案 0 :(得分:0)

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

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

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

[ti_wishlists_addtowishlist product_id =“999”variation_id =“0”]

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

答案 1 :(得分: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; ?>"]

答案 2 :(得分:-1)

使用短代码[ti_wishlists_addtowishlist product_id =“id;?&gt;”]