Setup a rule:
add_action( \'init\', function() {
add_rewrite_rule( \'^myparamname/?$\', \'index.php?myparamname=hello\', \'top\' );
} );
Whitelist the query param:
add_filter( \'query_vars\', function( $query_vars ) {
$query_vars[] = \'myparamname\';
return $query_vars;
} );
Get query vars:
localhost/myparamname
get_query_var(\'myparamname\'); // hello
localhost/myparamname?myparamname=hi
或
localhost/myparamname/?myparamname=hi
get_query_var(\'myparamname\'); // hi
正如你所见,
"hi" 显示消息,而不是
"hello" 在第二个示例中。在这里,理想的情况通常是
"hello".
最合适的回答,由SO网友:Sally CJ 整理而成
"hi" 显示消息,而不是"hello" 在第二个示例中
是的,因为它就是这样工作的:query_vars
是一个钩子,用于注册公共的自定义查询变量,因此如果URL查询字符串包含自定义查询变量,则WordPress会将查询变量设置为从查询字符串解析的值。
理想的情况通常是"hello"
您可以通过request
hook. 例如。
add_filter( \'request\', function ( $query_vars ) {
if ( isset( $query_vars[\'myparamname\'] ) ) {
$query_vars[\'myparamname\'] = \'hello\';
}
return $query_vars;
} );
只需确保使用唯一的查询变量,或者注意不要覆盖不应该被覆盖的查询变量。