Using query_vars filter

时间:2013-07-23 作者:Josh Levinson

我正在尝试从WP管理员链接出来,以特定的方式查看帖子。此url结构为example.com/post123/?my-preview=456

/post123/ 是帖子的常规永久链接。这个?my-preview=456 允许该帖子的某个部分根据“我的预览”值检索信息。

我知道WP带$_GET 参数,因此我尝试使用add_filter(\'query_vars\',\'my_query_vars\');

function my_query_vars($query_vars){
    $query_vars[] = \'my-preview\';
    return $query_vars;
}
在需要获取该值的实际部分,我尝试使用:

global $wp_query;
var_dump($wp_query->query_vars);
即使使用如上示例所示的url,在$wp\\u query->query\\u vars数组中也找不到“我的预览”对。

我是否没有执行正确的步骤来注册额外的query\\u var以供以后使用?如果我是的话,为什么它不留在身边?

编辑:我也尝试过:add_action(\'init\', \'add_query_vars\');

function add_query_vars() {
    global $wp;
    $wp->add_query_var(\'my-preview\');
}
以及wp_die(var_dump(get_query_var(\'my-preview\'))); 给予string(0) ""

1 个回复
最合适的回答,由SO网友:Milo 整理而成

查询变量过滤器对于您在这里执行的操作是不必要的,因为您没有在查询中使用它。将其作为GET参数添加到URL中不会使其出现在查询变量数组中,因为没有将GET变量转换为查询变量的机制,您只能确保如果将其添加到查询中,它不会被删除。

只要GET var是唯一的,并且没有被WordPress保留,就没有什么可以阻止设置,然后通过正常方式访问GET var:$_GET[\'my-preview\'].

结束

相关推荐

将定制的WHERE应用于默认的$wp_Query

我可以从文档中了解到,如果我需要执行自定义WHERE on WP\\u查询,我需要执行以下操作:// Create a new filtering function that will add our where clause to the query function filter_where( $where = \'\' ) { // posts 30 to 60 days old $where .= \" AND post_date >= \'\" .