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

WooCommerce - Add product urls to dropdown values

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

<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>

这可行,但我找不到将产品 link 添加到选项值的方法。

我试过标准的 permalink 代码和

$url = get_permalink( $product_id );

但是不行。

此处获取产品 ID 的答案是:

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

因此获取产品 URL 的代码可以是:

$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>