web-dev-qa-db-ja.com

まだ検索結果に表示されている隠されたウーコマース商品

私は本当にphp編集に慣れていませんが、私は学ぼうとしています。カタログの表示設定の下で「非表示」に設定されている私のウーコマース商品は、依然として検索結果の下に表示されています。非表示の商品を検索結果から除外するにはどうすればよいですか。このスレッドを見つけ( WP_Query:WooCommerce製品リストから隠し製品を除外します )、スレッドの下部にある以下のコードを追加してみました(私はWoocommerce 3.2.1を使用しています) 。それは私に死とこの誤りの白いスクリーンを与えました:

構文解析エラー:構文エラー、予期しない '=>'(T_DOUBLE_ARROW).

<?php
/*
Code to remove hidden woocommerce products from being displayed in a site search
*/
'tax_query' => array(
                  array(
                        'taxonomy' => 'product_visibility',
                        'field'    => 'name',
                        'terms'    => 'exclude-from-catalog',
                        'operator' => 'NOT IN',

                  )
              ) 

私が間違っていることに感謝します。ありがとうございます。

1
Abby G.

このコードはどこにでも追加することはできませんし、functions.phpや他のこのようなphpファイルに追加することもできません。これはWordPressクエリオブジェクトを作成するために使用される配列の要素です。それはWP_Queryクラスかget_postsとquery_posts関数を通して、あるいはメインページのクエリーを修正するためのフィルタを通して追加されなければなりません。

しかし、検索テンプレートがどのように機能するのかを詳しく知らなければ、これを使ってヘルプを提供することはできません。もしあなたが古典的な検索テンプレートを使って作業しているなら、これはあなたが使う必要があるタクソノミーフィルターを適用するコードです、そしてあなたはこれをfunctions.phpに加えることができます:

add_action('pre_get_posts', 'wpse_187444_search_query_pre');

function wpse_187444_search_query_pre($query) {
    if ($query->is_search() && $query->is_main_query()) {
        $tax_query = $query->get('tax_query', array());

        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field'    => 'name',
            'terms'    => 'exclude-from-catalog',
            'operator' => 'NOT IN',
        );

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

しかし、これはあなたにとってうまくいかないかもしれません、それはあなたの検索テンプレートと検索結果が質問される方法に依存します。

2
Milan Petrovic