2017-06-09 107 views
1

在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); 

但它不工作。

+0

你從哪裏得到$ product_id?在你的循環裏面沒有那樣的東西。 – Alice

回答

0

這裏的答案,以獲得產品編號爲:

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

工作完美,非常感謝你:-) – CharlyAnderson

相關問題