web-dev-qa-db-ja.com

Woocommerceで「在庫切れ」の商品を非表示にする

[商品]と[在庫]で、次の設定を確認しました:[カタログから在庫切れのアイテムを非表示にする]

これで、売り切れたすべての製品がアーカイブ/カテゴリビューに表示されなくなります。ここまでは順調ですね。

問題は、非表示(在庫切れ)の商品がページごとにカウントされることです。したがって、最初のページで完売した商品が3つある場合、在庫のある商品のみが表示されます(6)。

また、これらの「隠された」製品は依然として検索可能であり、さまざまなウィジェットから表示できるようです。

これを修正する方法はありますか?在庫がない商品は本当に隠します。または手動で削除する必要がありますか?

15
janlindso

注意事項:常に開発者からの変更ログを読んでください。

ここで答えを見つけました: http://develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/#category-counts-incorrect

カテゴリの商品数が多すぎる、または少なすぎる場合、WooCommerce 2.1に更新した後、簡単な回避策があります。

WordPress=管理パネルの[WooCommerce]> [システムステータス]内の[ツール]タブに移動します。ここでは、最初に[条件の再計算]ボタンを使用し、その後、[一時的データの消去]ボタンを使用します。次にカテゴリが読み込まれたときに、システムはすべての製品を再カウントします。

更新:また、在庫数を0に変更するだけでは不十分であることも覚えておいてください。また、[在庫状況]を[在庫なし]に設定する必要があります。在庫がない場合でも店頭でのカウントとなります。

8
janlindso

これをテーマの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' );

}
12
patrickzdb

私はもっ​​と簡単な方法を見つけました、誰かがウーコマースで在庫切れの製品を非表示にすることをまだ探しているなら、htmlを編集せずにこれらの簡単な手順に従ってください!

  1. WooCommerce->設定に移動します
  2. 在庫に移動
  3. 私たちの問題について何かを言っているチェックボックスがあります、しかしそれは英語で行きます:-)あなたはあなたが必要なものを見つけるでしょう
  4. セーブ
5
klaudia

これは、公式のwoocommerceショートコードを使用している場合にのみ機能しますが、ビジュアルcomposerを使用し、カスタマイズされたプラグインまたはサードパーティのプラグインまたはショートコードを使用してページを作成する場合、最初のステップはクエリ用です。ループから実行し、それを次のように変更します

$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'
        )
    )
4
albaiti

在庫切れの商品を非表示にする手順

  1. WordPressダッシュボードのWooCommerce-> Settingsサブメニュー)に移動します
  2. [商品]タブ> [在庫]サブタブをクリックします
  3. 在庫切れの商品を非表示にするオプションの在庫切れの可視性をオンにします

enter image description here

0
NJENGAH