如何取消设置查询变量?

时间:2019-03-03 作者:Robert Andrews

我的主题文件多次通过将变量设置为后续模板零件文件中使用的模板零件set_query_var, 就像这样。。。

set_query_var(\'feature_id\', array(143866));
set_query_var(\'tax_meta_value\',  \'Payments\');
get_template_part(\'partials/page-blocks/block_tag_new\');

set_query_var(\'tax_meta_value\',  \'Venture Capital\');
get_template_part(\'partials/page-blocks/block_tag_new\');
在模板部分,使用get_query_var, 像$feature_id.

唯一的问题是,例如,在第二个实例中,模板部分仍然保留第一个的内存feature_id 上面传递的值。

在第二个实例中调用模板部件时,如何确保feature_id 值是常驻的,因为没有传递值?

我是否需要做一些像设置$feature_id, 在模板零件文件中,如globalunset 它或者在调用文件或其他文件中执行此操作?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

在第二个实例中调用模板部件时,如何确保没有feature\\u id值是常驻的,因为没有传递任何值?

恐怕你误解了什么set_query_var 确实如此。它不会通过任何测试,也不会只对下一个测试有效get_template_part 呼叫

好吧,那么它到底有什么作用呢?来自文档:

设置查询变量。

代码如下:

function set_query_var( $var, $value ) {
    global $wp_query;
    $wp_query->set( $var, $value );
}
所以现在一切都应该清楚了。让我们看看您的原始代码:

set_query_var(\'feature_id\', array(143866));  // <- sets query var called feature_id to 143866
set_query_var(\'tax_meta_value\',  \'Payments\');  // <- set query var called tax_meta_value to Payments
get_template_part(\'partials/page-blocks/block_tag_new\');

set_query_var(\'tax_meta_value\',  \'Venture Capital\');  // <- sets tax_meta_value to Venture Capital 
// feature_id is still 143866, because it hasn\'t been changed
get_template_part(\'partials/page-blocks/block_tag_new\');
如果要取消设置查询变量,可以将其设置为false/NULL:

set_query_var(\'feature_id\', false);

相关推荐

PHP variables in mysql query

关于如何使用$wpdb->insert 语法:($table, array($column=>$value),$format)?我知道这不管用:$wpdb->update(\'wp_mytable\', array(\'product\'=>\"$product\")); 这也不是:$wpdb->update(\'wp_mytable\', array(\'product\'=>$product)); 这也不是:$insert_row