WooCommerce – 如何讓沒有庫存的商品排在後面?

使用 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;

步驟二

沒有步驟二,就這樣。