簡體   English   中英

使用 get_query_var 時看到的隨機字符串是什么?

[英]What is the random string I am seeing when I use get_query_var?

我正在使用 wordpress 中自定義帖子類型的 ACF 字段設置高級搜索頁面。

在我的示例中,我在 ?licenseType=Students 中發送“Students”

搜索示例

我已經注冊了我的 query_vars

 add_filter( 'query_vars', 'software_register_query_vars' );
 function software_register_query_vars( $vars ) {
    $vars[] = 'licenseType';
  return $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'] 時,我看到了同樣的事情。

我遇到了同樣的情況,但對我來說從LIKE更改為=不是一個選擇。

對於仍然需要使用LIKE任何人,您可以使用wpdb::remove_placeholder_escape () 將這些隨機字符串轉義回%

我的問題已在wordpress.stackexchange上得到解答

“這是元查詢值中包含 % 字符的症狀。由於 4.8.3 % 字符被轉義(實際上被半隨機字符串替換)並且在執行 sql 查詢之前應該被取消轉義。”

我還發現“當使用 'LIKE' 的 meta_compare 值時,WordPress 會自動將通配符 (%) 包裹在 meta_value 字符串周圍。”

我將比較運算符從 LIKE 更改為 = 並刪除了隨機字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM