在Woocommerce中,我想在产品简短描述中添加一个下拉列表,显示具有相同类别的所有产品。如果可以转到所选产品的产品页面,那就更好了。我没有看到任何线程,实现我想做的事情。任何帮助将不胜感激。
ajsxfq5m1#
2021更新-新增product_id作为参数,允许将简码用于定义的产品ID(例如页面)。
product_id
下面将使您可以在您的产品简短描述(甚至在产品描述)中使用的自定义简码,并将显示来自当前产品的相同产品类别的下拉列表。代码:
add_shortcode( 'products_dropdown', 'wc_products_from_cat_dropdown' ); function wc_products_from_cat_dropdown( $atts ) { // Shortcode Attributes $atts = shortcode_atts( array( 'product_id' => '', ), $atts, 'products_dropdown' ); $product_id = is_product() ? get_the_id() : $atts['product_id']; if ( empty($product_id) ) return; ob_start(); $query = new WP_Query( array( 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => '-1', 'post__not_in' => array( $product_id ), 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) ) , ) ), ) ); if ( $query->have_posts() ) : echo '<div class="products-dropdown"><select name="products-select" id="products-select"> <option value="">'.__('Choose a related product').'</option>'; while ( $query->have_posts() ) : $query->the_post(); echo '<option value="'.get_permalink().'">'.get_the_title().'</option>'; endwhile; echo '</select> <button type="button" style="padding:2px 10px; margin-left:10px;">'._("Go").'</button></div>'; wp_reset_postdata(); endif; ?> <script type='text/javascript'> jQuery(function($){ var a = '.products-dropdown', b = a+' button', c = a+' select', s = ''; $(c).change(function(){ s = $(this).val(); console.log(s); // just for testing (to be removed) }); $(b).click(function(){ if( s != '' ) location.href = s; }); }); </script> <?php return ob_get_clean(); }
代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。
用途
1).对于单个产品页面:只需将以下短代码粘贴在产品简短说明(或描述)中:
[products_dropdown]
2).对于单个产品页面,在php代码中:
echo do_shortcode("[products_dropdown]");
3).在文本编辑器中的任何文章或页面上,定义product_id参数 (下面定义的产品id为*37**)*:
37
[products_dropdown product_id="37"]
cld4siwp2#
将其添加到主题的'functions.php'中,该主题将显示当前产品类别的所有产品。
function add_products_short_description() { $product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' ); if ( $product_cats ) { $single_cat = array_shift( $product_cats ); $product_args = array( 'post_type' => 'product', 'posts_per_page' => '-1', 'product_cat' => $single_cat->name ); $products = new WP_Query( $product_args ); if ( $products->have_posts() ) : echo '<ul>'; while ( $products->have_posts() ) : $products->the_post(); global $product; echo '<li><a href="'.get_permalink( $products->ID ).'">'.get_the_title($products->ID).'</a></li>'; endwhile; echo '</ul>'; endif; } } add_action( 'woocommerce_single_product_summary', 'add_products_short_description', 15 );
2条答案
按热度按时间ajsxfq5m1#
2021更新-新增
product_id
作为参数,允许将简码用于定义的产品ID(例如页面)。下面将使您可以在您的产品简短描述(甚至在产品描述)中使用的自定义简码,并将显示来自当前产品的相同产品类别的下拉列表。
代码:
代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。
用途
1).对于单个产品页面:只需将以下短代码粘贴在产品简短说明(或描述)中:
2).对于单个产品页面,在php代码中:
3).在文本编辑器中的任何文章或页面上,定义product_id参数 (下面定义的产品id为*
37
**)*:cld4siwp2#
将其添加到主题的'functions.php'中,该主题将显示当前产品类别的所有产品。