WooCommerce - 将产品网址添加到下拉列表值

时间:2017-06-09 13:33:52

标签: php wordpress woocommerce product hook-woocommerce

在WooCommerce中,我正在尝试添加一个显示所有产品的选择。我使用以下代码:

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">

    <option value="">- Select Value - </option>
    <?php
        $args = array( 'post_type' => 'product' );
        $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : 
            $loop->the_post();
            echo '<option value="#">'.the_title('','',false).'</option>';
        endwhile;
    ?>

</select>

这有效,但我无法找到将产品链接添加到选项值的方法。

我已尝试过标准永久链接代码和

$url = get_permalink( $product_id );

但它不起作用。

1 个答案:

答案 0 :(得分:0)

获取产品ID的答案是:

$product_id = $loop->post->ID;

因此,获取产品网址的代码可能是:

$product_id = $loop->post->ID; // Product ID
$product = wc_get_product($product_id); // WC_Product object (instance)
$product_link = $product->get_permalink( );

或者

$product_id = $loop->post->ID; // Product ID
$product_link = get_permalink( $product_id );

所以你的最终代码应该是:

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">

    <option value="">- Select Value - </option>
    <?php
        $args = array( 'post_type' => 'product' );
        $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : 
            $loop->the_post();
            $post_id = $loop->post->ID;
            $product = wc_get_product($post_id);
            $link = get_permalink( $post_id );
            $title = $product->get_name();
            echo '<option value="'.$link.'">'.$title.'</option>';
        endwhile;

        // Reset post data
        wp_reset_postdata();
    ?>

</select>