Woocommerce 产品简短描述中同一类别的产品下拉菜单

问题描述 投票:0回答:3

在 Woocommerce 中,我想在产品简短描述中添加一个下拉列表,显示具有相同类别的所有产品。如果能够进入所选产品的产品页面就更好了

我没有看到任何线程可以满足我想要做的事情。

任何帮助将不胜感激。

wordpress woocommerce dropdown product custom-taxonomy
3个回答
1
投票

2021 更新 - 添加

product_id
作为参数,允许将简码用于已定义的产品 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

[products_dropdown product_id="37"]

enter image description here

enter image description here


0
投票

将其添加到主题的“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 );

-1
投票

感谢您发布此答案,非常感谢!您知道我如何在下拉列表中的标题旁边提取产品价格吗?

© www.soinside.com 2019 - 2024. All rights reserved.