我想问一下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');
但是当我点击心脏图标(心愿单)时只获得一个身份证,换句话说,心愿单按钮只能获得1个身份证,无论你点击另一个产品还是错误的身份证产品。 有谁知道,我应该改变什么?
答案 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;”]