私は本当に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',
)
)
私が間違っていることに感謝します。ありがとうございます。
このコードはどこにでも追加することはできませんし、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);
}
}
しかし、これはあなたにとってうまくいかないかもしれません、それはあなたの検索テンプレートと検索結果が質問される方法に依存します。