web-dev-qa-db-ja.com

分類法、タグ、カスタムフィールドでも検索

分類法、カスタムフィールド、タグについて別々に多くの回答を見つけましたが、そのほとんどは古くなっています。

しかし、検索を組み合わせる方法

- 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;

}}
1
Christian

それは Relevanssi はとても良い更新されたプラグインです

それは私の問題を解決しました

1
Christian