[英]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.