分類法、カスタムフィールド、タグについて別々に多くの回答を見つけましたが、そのほとんどは古くなっています。
しかし、検索を組み合わせる方法
- designed custom fields of a custom post
- custom taxonomy terms
- Tags
- Title (already by default)
- Content (already by default)
私のカスタムアイテムの1つは、たとえばです。
item 1
tag: tag1, tag2, tag3
taxonomy: tax1, tax2
custom field 1: cf1
title: composed title 1
desc: a full paragraph with many words
今、私は検索できるようになりたいと思います:
"paragraph tag2 cf1 composed"
解決策は信じられないほど複雑に思えます…それは新しいSQLクエリ(JOIN LEFT
など)を使ってのみ可能ですか?それとも単純な$query->set()
で私の道を見つけることができますか?
add_filter( 'pre_get_posts', 'cjg_theme_filter' );
if (!function_exists('cjg_theme_filter')) {
function cjg_theme_filter( $query ){
if ( $query->is_main_query() ){
//is_search is necessary for custom taxonomy urls
if ( $query->get( 'tag' ) OR $query->get( 'artprim_categories' ) OR is_search() )
$query->set( 'post_type', array( 'post', 'artprim_item' ) );
if ( is_search() ){
$queryString = $query->query_vars['s'];
$queryTab = explode(' ', $queryString);
$meta = array();
foreach($queryTab as $queryString){
$meta[] = array(
'key' => 'date',
'value' => $queryString,
'compare' => 'LIKE');
}
$query->set( 'meta_query',$meta );
};
}
return $query;
}}
それは Relevanssi はとても良い更新されたプラグインです
それは私の問題を解決しました