使用短代码显示特定类别的Woocommerce产品下拉列表

时间:2018-04-23 19:34:38

标签: php wordpress woocommerce dropdown shortcode

我希望按类别按下拉列表显示产品

我制作了这段代码,但为什么价值不在?

之内
function rakitpc() {
    $args = array(
    'posts_per_page' => -1,
    'product_cat' => 'Tshirts',
    'hide_empty' => 0,
    'post_status' => 'publish',
    'post_type' => 'product',
    'orderby' => 'title',
    'echo' => '0'
    );
    $products = new WP_Query( $args );
    $output = '<select>';
    // foreach ( $products as $product ) {
    while ( $products->have_posts() ) {
        $products->the_post();
        $aa = the_permalink($post);
        echo $aa;
        $bb = the_title($post);
        $output .= "<option value=\"<?php the_permalink(); ?>\"> <?php the_permalink(); ?></option>";  
    }
    wp_reset_query();
    $output .='</select>';
    return $output;
    }
add_shortcode( 'gege', 'rakitpc' );

这是我得到的输出:

output

我的参考:How do I display a "category products drop down in a wordpress page" in Woocommerce 2.5.2

1 个答案:

答案 0 :(得分:1)

请尝试以下操作,为您提供永久链接的下拉列表,其中<option>值显示产品名称​​(请参见最后的屏幕截图)

您需要在功能内的数组中设置类别名称(或类别名称)。

function rakitpc() {
    // HERE below, define your Product category names
    $term_names = array('T-shirts');

    // The WP_Query
    $query = new WP_Query( array(
        'posts_per_page' => -1,
        'post_type' => 'product',
        'post_status' => 'publish',
        'hide_empty' => 0,
        'orderby' => 'title',
        'tax_query' => array( array(
            'taxonomy' => 'product_cat', // for a Product category (or 'product_tag' for a Product tag)
            'field'    => 'name',        // can be 'name', 'slug' or 'term_id'
            'terms'    => $term_names,
        ) ),
        'echo' => '0'
    ) );

    $output = '<select>';
    // foreach ( $products as $product ) {
    if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();

        $permalink = get_permalink($query->post->ID);
        $title = $query->post->post_title;
        $output .= '<option value="' . $permalink . '">' . $title . '</option>';

    endwhile;

    wp_reset_postdata();

    $output .='</select>';

    else :

    $output = '<p>No products found<p>';

    endif;

    return $output;
}

add_shortcode( 'gege', 'rakitpc' );

代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。

enter image description here