[商品]と[在庫]で、次の設定を確認しました:[カタログから在庫切れのアイテムを非表示にする]
これで、売り切れたすべての製品がアーカイブ/カテゴリビューに表示されなくなります。ここまでは順調ですね。
問題は、非表示(在庫切れ)の商品がページごとにカウントされることです。したがって、最初のページで完売した商品が3つある場合、在庫のある商品のみが表示されます(6)。
また、これらの「隠された」製品は依然として検索可能であり、さまざまなウィジェットから表示できるようです。
これを修正する方法はありますか?在庫がない商品は本当に隠します。または手動で削除する必要がありますか?
注意事項:常に開発者からの変更ログを読んでください。
カテゴリの商品数が多すぎる、または少なすぎる場合、WooCommerce 2.1に更新した後、簡単な回避策があります。
WordPress=管理パネルの[WooCommerce]> [システムステータス]内の[ツール]タブに移動します。ここでは、最初に[条件の再計算]ボタンを使用し、その後、[一時的データの消去]ボタンを使用します。次にカテゴリが読み込まれたときに、システムはすべての製品を再カウントします。
更新:また、在庫数を0に変更するだけでは不十分であることも覚えておいてください。また、[在庫状況]を[在庫なし]に設定する必要があります。在庫がない場合でも店頭でのカウントとなります。
これをテーマの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' );
}
私はもっと簡単な方法を見つけました、誰かがウーコマースで在庫切れの製品を非表示にすることをまだ探しているなら、htmlを編集せずにこれらの簡単な手順に従ってください!
これは、公式の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'
)
)