簡體   English   中英

在 Woocommerce 中隱藏“缺貨”產品

[英]Hide 'out of stock' products in Woocommerce

在“產品”和“庫存”下,我檢查了以下設置:“隱藏目錄中的缺貨商品”

現在所有售罄的產品都隱藏在存檔/類別視圖中。 到現在為止還挺好。

問題是隱藏的(缺貨)產品是按頁面計算的。 因此,如果第一頁上有 3 種產品售罄,則僅顯示有庫存的產品 (6)。

這些“隱藏”的產品似乎也仍然可以搜索,並且可以通過不同的小部件看到。

任何想法如何解決這一問題? 我的意思是真正隱藏缺貨的產品。 還是我需要手動刪除它們?

您可以嘗試將其添加到主題的 functions.php 文件中:

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {


$q->set( 'meta_query', array(array(
    'key'       => '_stock_status',
    'value'     => 'outofstock',
    'compare'   => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

我從這個 URL 修改了代碼: http : //www.wptaskforce.com/how-to-exclude-one-or-more-category-in-woocommerce-shop-page/

再次保存在這里以防網站離線:(此代碼不包括某些產品類別)

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {

$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'PUT YOUR CATEGORY HERE' ), // Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
'operator' => 'NOT IN'
)));

}



remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

自我注意:始終閱讀開發人員的更改日志。

在這里找到答案: http : //develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/#category-counts-incorrect

如果類別的產品計數顯示過高或過低的數字,更新到 WooCommerce 2.1 后,有一個簡單的解決方法。

轉到 WooCommerce > WordPress 管理面板的系統狀態中的“工具”選項卡。 在這里,您首先使用“重新計算術語”按鈕,然后使用“清除瞬變”按鈕。 這將強制系統在下次加載類別時重新計算所有產品。

更新:還要記住,將庫存數量更改為 0 是不夠的。您還必須將“庫存狀態”設置為“缺貨”。 如果沒有,即使沒有庫存產品,該產品也將被計算在商店中。

我找到了更簡單的方法,如果有人仍在尋找在 woocommerce 中隱藏缺貨的產品,請按照這些簡單的步驟操作,而無需編輯 html!

  1. 轉到 WooCommerce -> 設置
  2. 去庫存
  3. 有一個復選框說明了我們的問題,但它是英文的:-) 你會找到你需要的
  4. 節省

這僅在您使用官方 woocommerce 簡碼時才有效,但如果您使用可視化作曲家並使用自定義插件或第 3 方插件或簡碼創建頁面,則第一步是針對從循環運行的查詢,然后對其進行修改像這樣的事情

$params = array(
        'posts_per_page' => 5,
        'post_type' => array('product', 'product_variation'),
        'meta_query' => array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        )
);

你必須確定的最重要的部分是

    'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        )
    )

隱藏缺貨產品的步驟

  1. 轉到WooCommerce -> WordPress 儀表板中的設置子菜單
  2. 單擊產品選項卡 > 庫存子選項卡
  3. 選中隱藏缺貨產品的缺貨可見性選項

在此處輸入圖片說明

您可以將 PHP 代碼段放在子主題 functions.php 文件的底部。

add_action('woocommerce_product_query', 'custom_woocommerce_product_query');

function custom_woocommerce_product_query($q)
    {
        if (!is_admin())
        {
            $oos_query = new WP_Query(['meta_query' => [['key' => '_stock_status', 'value' => 'outofstock', 'compare' => '=', ], ], 'post_type' => 'product', 'posts_per_page' => - 1, 'fields' => 'ids', ]);
            $exclude_ids = $oos_query->posts;
    
            $q->set('post__not_in', $exclude_ids);
        }
    }

我知道這個問題很久以前就有人問過了,但現在問題的解決方案不同了,所以我把這個問題貼給和我有同樣問題的人。 在 WooCommerce 5.3.0 上測試

解決方案:首先確保取消選中Woocomerce > 設置中的“隱藏缺貨產品”復選框,然后將此 PHP 代碼添加到您的子主題 functions.php 文件中:

add_action('woocommerce_product_query', 'show_only_instock_products');

function show_only_instock_products($query) {
        $meta_query = $query->get( 'meta_query' );
        $meta_query[] = array(
                'key'       => '_stock_status',
                'compare'   => '=',
                'value'     => 'instock'
        );
        $query->set( 'meta_query', $meta_query );
}

它在我的商店中運行良好,該商店與批發商集成在一起,每小時更新一次庫存水平,並且有數千種產品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM