簡體   English   中英

為什么 get_query_var 不返回我的自定義查詢變量?

[英]Why isn't get_query_var returning my custom query vars?

我正在構建一個 WP 插件,它定義了一些額外的 URL、查詢變量和模板。

我想使用get_query_var("wps_service_id"); 在我的模板中,但無論我做什么,它都不會返回任何內容。

我已將額外的查詢變量列入白名單, 如文檔解釋

add_filter('query_vars', function ($query_vars) {
    $query_vars[] = 'wps_service_id';
    return $query_vars;
});

我正在定義我的額外 URL 並加載正確的模板,如下所示:

add_action('init',  function () {
    add_rewrite_rule(
        'services/([a-z0-9-]+)/?$',
        'index.php?wps_service_id=$matches[1]',
        'top'
    );
});


add_action('parse_request', function (&$wp) {
    if (array_key_exists('wps_service_id', $wp->query_vars)) {
        require plugin_dir_path(__DIR__) . "views/service.php";
        exit();
    }
    return;
});

模板正在加載,因此 WP 在某種程度上清楚地讀取和解釋了查詢變量。 為什么我不能閱讀它並使用get_query_var在模板中使用它?

使用'array_key_exists'是否正確? 您應該使用“in_array”,因為您在 $query_vars[] = 'wps_service_id'; 中分配了一個值而不是鍵

檢查:

error_log( array_key_exists('wps_service_id', $wp->query_vars));
error_log( in_array('wps_service_id', $wp->query_vars));
    
   

暫無
暫無

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

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