2017-11-16 1 views
1

私は、ワードプレスでカスタム投稿タイプのACFフィールドを持つ高度な検索ページを設定しています。get_query_varを使用したときに表示されるランダムな文字列は何ですか?

私の例で私は '学生' を送信するのですか?LICENSETYPE =学生

Search Example

私は

add_filter('query_vars', 'software_register_query_vars'); 
function software_register_query_vars($vars) { 
    $vars[] = 'licenseType'; 
    return $vars; 
} 

私query_varsを登録して、私のpre_get_postsを設定している

add_action('pre_get_posts','software_pre_get_posts'); 
function software_pre_get_posts($query) { 
    if (is_main_query() && $query->get('post_type') == 'uc_software') { 
    $query->set('nopaging','true'); 
    $query->set('orderby', 'title'); 
    $query->set('order', 'ASC'); 

    $meta_query = array(); 

    if(!empty(get_query_var('licenseType'))){ 
    $meta_query[] = array('key' => 'software_license_type', 'value' => 
    get_query_var('licenseType'), 'compare' => 'LIKE'); 
    } 
// ... 
//I will add more fields here... 
// ... 
    if(count($meta_query) > 1){ 
     $meta_query['relation'] = 'AND'; 
    } 

    if(count($meta_query) > 0){ 
     $query->set('meta_query', $meta_query); 
    } 
    } 
} 
をフィルタリング

作成中のクエリを表示すると私は参照してください

SELECT wp_125_posts.* FROM wp_125_posts INNER JOIN wp_125_postmeta ON ( 
wp_125_posts.ID = wp_125_postmeta.post_id) WHERE 1=1 AND (( 
wp_125_postmeta.meta_key = 'software_license_type' AND 
wp_125_postmeta.meta_value LIKE 
'{4d69cec85576e5c23416d1afb6df73c1a4a288f24aff1da852b18ad70b464309}Students{4d69cec85576e5c23416d1afb6df73c1a4a288f24aff1da852b18ad70b464309}' 
)) AND wp_125_posts.post_type = 'uc_software' AND (wp_125_posts.post_status = 'publish' 
OR wp_125_posts.post_status = 'acf-disabled' OR wp_125_posts.post_status = 'private') 
GROUP BY wp_125_posts.ID ORDER BY wp_125_posts.post_title ASC 

私のquery_varと共にキャプチャされているランダムな文字列は何ですか?私はそれなしで私のquery_varを取得する方法はありますか?私は$ _GET ['licenseType']を使うと同じことが分かります。

+0

gzip? hmmmm – ProEvilz

+0

gzipはファイル圧縮ツールですか?それはどのように関与しますか? –

+0

クエリはどのように配置されますか? – Blackbam

答えて

0

私の質問は4.8.3%文字をエスケープ(実際はセミランダムな文字列に置き換え)とすべきでされているので、これは。あなたのメタクエリ値の%文字を持つの症状である」wordpress.stackexchange

に答えました。 SQLクエリを実行する前にエスケープしないでください。 "

「LIKE」のmeta_compare値を使用すると、WordPressは自動的に、meta_value文字列の周りにワイルドカード文字(%)をラップすることがわかりました。

比較演算子をLIKEから=に変更し、ランダムな文字列を削除しました。

関連する問題