使用 WooCommerce 的時候,一個令人頭痛的問題就是到底要不要顯示沒有庫存的商品。基於 SEO 的原因,即使不能購買,也不應該隱藏起來,否則 Google 的搜尋引擎就不收錄了。今天跟大家快速說明一下如何在商店頁面把「沒有庫存」的商品排到最後面去。
在進行之前,首先你要有編輯你的主題的 function.php
這個檔案的權限。如果你是套用別人的佈景主題,我會建議你先創造一個自己的子佈景主題,以免造成之後主題更新時,這個功能被蓋掉。
步驟一
把下列原始碼貼到你的 function.php
最底下:
<?php class my_Orderby_Stock_Status { public function __construct() { if (!is_admin() && in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { add_filter('posts_clauses', array( $this, 'order_by_stock_status' ) , 2000); } } public function order_by_stock_status($posts_clauses) { global $wpdb; if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag())) { $posts_clauses['join'].= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) "; $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby']; $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where']; } return $posts_clauses; } } new my_Orderby_Stock_Status;
步驟二
沒有步驟二,就這樣。