0

特定の post_types の結果を取得しようとしていますが、フィルターを追加して、post_title と post_content がクエリ文字列の「LIKE」であるかどうかを確認すると、添付ファイルの post_types を含むすべての post_types が返されます。 $args。これが私が試しているコードです:

$query_string = get_search_query();
$args = array(                      
        'post_type' => array("hc_pillow", "hc_topper", "hc_accessory", "page"),                                                                                             
        'meta_query' => array(
            'relation' => 'OR',
            array(
                    'key' => 'tab_retail',
                'value' => $query_string,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'tab_tech',
                'value' => $query_string,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'tab_shipping_information',
                'value' => $query_string,
                'compare' => 'LIKE'
            )
        ),                      
        'posts_per_page' => "-1"                        
);
function filter_where_title($where = '') {
    $query_string = get_search_query();
    $where .= " OR post_title LIKE '%".$query_string."%' OR post_content LIKE '%".$query_string."%'";                   
    return $where;
}
$posts = new WP_Query();
add_filter('posts_where', 'filter_where_title');
$posts->query($args);                
remove_filter('posts_where', 'filter_where_title');

何か助けていただければ幸いです。他に何を試したらよいかわかりません。

4

1 に答える 1

0

WHEREステートメントは次のように構成する必要があります。

WHERE `post_type` IN ( 'hc_pillow', 'hc_topper', 'hc_accessory', 'page' ) AND ( `post_title` LIKE '%search_string%' OR `post_content` LIKE '%search_string%' )

今ではもっと似ています

WHERE `post_type` IN ( 'hc_pillow', 'hc_topper', 'hc_accessory', 'page' ) OR `post_title` LIKE '%search_string%' OR `post_content` LIKE '%search_string%'

ここで、3つの条件のいずれか1つで、行を検証するのに十分です。

于 2012-07-20T21:39:49.437 に答える