WooCommerceで商品を非表示にする方法、またはカテゴリや役割で商品を非表示にする方法

公開: 2020-02-24

WooCommerceとこの投稿で特定の製品を非表示にするために使用できる方法はたくさんあります。 WooCommerceで商品を非表示にするこれらの各方法について説明します。WooCommerceストアから商品を非表示にすることを検討する必要がある理由はいくつかありますが、リストの一番上にあるのは、商品が在庫切れの場合、または商品が予約されている場合です。特定の顧客またはユーザーの役割。

WooCommerce製品を非表示にする

在庫切れの商品を非表示にする場合は、商品を非表示にするのではなく、まず商品に在庫切れのラベルを追加することを検討する必要があります。

それでも、これらの在庫切れの商品やその他のWooCommerce商品を非表示にしたい場合は、ID、名前、またはカテゴリ別に商品を非表示にする方法をこの投稿で共有します。

オプションを使用してWooCommerce製品を非表示にする

WooCommerceにはデフォルトで、ユーザーが製品の可視性を制御できる優れたオプションが付属しています。

画像を公開する前に可視性オプションを制御することで、WooCommerceで非表示の製品を作成できます。 可視性を使用してWooCommerceで製品を非表示にするには、次の手順に従う必要があります。

  1. WordPressサイトのダッシュボードにログインします
  2. 下の画像に示すように製品メニューをクリックして、表示オプションを使用してユーザーから非表示にする製品にアクセスします。 Woocommerceで商品を非表示にする方法
  3. 以下に示すように、非表示にするすべての製品のリストから製品を選択し、編集をクリックして製品編集画面にアクセスします。 Woocommerceで商品を非表示にする方法
  4. 下の公開メタボックスの下の右側にある製品編集画面に、「カタログの可視性」という名前のオプションがあります。このリンクをクリックすると、オプションのドロップダウンが表示され、最後のオプションは非表示になります。
    このラジオオプションをチェックして[OK]をクリックすると、投稿が更新され、商品はショップカタログから非表示になります。 これらの3つのステップ(1,2,3)に示されているように: Woocommerceで商品を非表示にする方法
  5. これらのオプションを保存して投稿を更新すると、ショップのフロントエンドに表示されているように、商品の表示が非表示に設定されます。 Woocommerceで商品を非表示にする方法
  6. 商品編集画面のバックエンドでカタログ表示オプションをチェックすると、投稿が更新されたときに非表示に更新されたことがわかります。 Woocommerceで商品を非表示にする方法

これは、ショップカタログからWooCommerce製品を非表示にする最も簡単な方法です。 子テーマにコードを追加するなど、他にも使用できる方法があります。 WooCommerceで商品を非表示にするために使用できるその他のオプションを見てみましょう。

Woocommerceはショップページから特定のカテゴリの商品を非表示にします

WooCommerceのショップページから特定の商品を非表示にする場合は、ショップページ「woocommerce_product_query」のクエリを対象とするアクションフックを使用してこれを実現できます。

コールバック関数は、$ tax_queryを使用して、非表示にする製品に関連付けられている用語に絞り込む必要があります。

この場合、$ tax_query配列の用語キーは、現在のWooCommerce製品カテゴリを取得する方法を投稿で説明したように、カテゴリ/タグと同等です。

この製品を「自動車部品」カテゴリから非表示にしたいとします。

woocommerce製品を隠す

関数.phpファイルに追加された次のコードスニペットを使用して、ショップページから製品を非表示にすることができます。

 / **
 *ショップページからカテゴリ別にWooCommerce製品を非表示にします。
 *
 * @param $ q
 * /
 

add_action( 'woocommerce_product_query'、 'njengah_hide_product_by_category_shop_page'); 

関数njengah_hide_product_by_category_shop_page($ q){

    $ tax_query =(配列)$ q-> get( 'tax_query');

    $ tax_query [] = array(
           '分類法' => 'product_cat'、
           'フィールド' => 'スラッグ'、
           'terms' => array( 'uncategorised'、 'auto-parts')、//ショップページの 'autoparts'カテゴリの商品を表示しません。
           '演算子' => 'NOT IN'
    );


    $ q-> set( 'tax_query'、$ tax_query);

}

このコードをテーマ関数に追加すると、「auto-parts」カテゴリを、製品を非表示にする他のカテゴリに置き換えることができます。これにより、以下に示すように、ショップページのそのカテゴリから製品が効果的に非表示になります。

woocommerce製品を隠す

WooCommerceはログインしない限り製品を非表示にします

WooCommerceで製品を非表示にする別の一般的な方法は、ログに記録されているかどうかにかかわらず、ユーザーのステータスに基づいて製品の表示を制限することです。

最初のステップは、明らかにユーザーがログインしているかどうかを確認することです。ここでは、ユーザーがWordPressにログインしているかどうかを確認する方法について詳しく説明しました。

このコードを使用してログインステータスを確認し、クエリと組み合わせて、ユーザーのログインステータスに応じて条件付きでWooCommerce製品を非表示にします。

コードは次のようになります。

 ****
 *ユーザーがログインしていない場合は、WooCommerce製品を非表示にします 
 *
 * @param $ query
 * /
 

function njengah_hide_product_if_user_not_logged($ query){
	
	
    if($ query-> is_main_query()&& is_woocommerce()&&!is_user_logged_in()){
		
        $ tax_query = array(
            配列(
                    '分類法' => 'product_cat'、
                    'フィールド' => 'スラッグ'、
                    'terms' => array( 'uncategorised'、 'auto-parts')、//ショップページの 'autoparts'カテゴリの商品を表示しません。
                    'operator' => 'NOT IN' //除外
                )。
            );

        $ query-> set( 'tax_query'、$ tax_query);
    }
}

add_action( 'pre_get_posts'、 'njengah_hide_product_if_user_not_logged');

ご覧のとおり、クエリを続行する前に、is_user_logged_in()関数を使用してユーザーがログインしているかどうかを条件付きでチェックしています。

Woocommerceはユーザーの役割で製品を隠す

ユーザーロールで製品を非表示にすることもできます。 WordPressで現在のユーザーロールを取得する方法についての前のチュートリアルで概説したように、最初に現在ログインしているユーザーとそのユーザーロールを取得する必要があります ユーザーロールを取得するためのこのコードは、次のとおりです。

 $ user = wp_get_current_user(); //現在のユーザーの取得と設定

        $ roles =(配列)$ user-> roles; //役割を取得する

        $ roles [0] //現在のユーザーロール

このコードを前のpre_get_postsアクションと組み合わせて、管理者が次のようになることを期待するすべてのユーザーに対して製品を非表示にするコードを組み合わせる必要があります。

 / **
 *この場合、管理者のみがこの製品を表示できるように、ユーザーロールでWooCommerce製品を非表示にします 
 *
 * @param $ query
 * /


function njengah_hide_product_by_user_role($ query){
	
	 $ user = wp_get_current_user(); //現在のユーザーの取得と設定 
	 $ roles =(配列)$ user-> roles; //役割を取得する 
	
	
    if($ query-> is_main_query()&& is_woocommerce()&& $ roles [0]!= 'administrator'){
		
        $ tax_query = array(
            配列(
                    '分類法' => 'product_cat'、
                    'フィールド' => 'スラッグ'、
                    'terms' => array( 'uncategorised'、 'auto-parts')、//ショップページの 'autoparts'カテゴリの商品を表示しません。
                    'operator' => 'NOT IN' //除外
                )。
            );

        $ query-> set( 'tax_query'、$ tax_query);
    }
}

add_action( 'pre_get_posts'、 'njengah_hide_product_by_user_role');

クエリを条件付きでチェックしているこのコード行でわかるように、ユーザーロールがadmin – $ roles [0]!= 'administrator'でないかどうかをチェックする条件を導入し、クエリを続行します。 これは、ユーザーの役割に基づいてWooCommerce製品を非表示にする方法です。

この例を特定のニーズに合わせて説明することができます。また、これらすべてのケースを組み合わせて、WooCommerce製品を非表示にする1つの条件付きの方法を作成することもできます。

最終的な考え

この投稿では、ユーザーの役割による非表示、ユーザーがログインしていない限り製品の非表示、これらの条件のいずれもなしでWooCommerce製品の非表示を含む、WooCommerce製品を非表示にする3つの一般的な方法を強調しました。 また、商品編集画面にあるカタログ表示オプションを使用してWooCommerce商品を非表示にする最も簡単な方法についても概説しました。 これらのソリューションのいずれかを簡単に実装して、WooCommerce製品をストアから隠すことができるようになることを願っています。