如何正确转义要在WP_QUERY中使用的查询变量

时间:2014-01-23 作者:dashaluna

我有通过以下方式添加的自定义查询变量query_vars. 例如,“工业”。

在里面pre_get_posts 操作I如果“industry”参数有值,则构造并添加分类查询,如下所示:

add_action( \'pre_get_posts\', \'alter_posts\');
function alter_posts( $q ) {
    $tax_query = array();

    // industry taxonomy
    if ( get_query_var( \'industry\' ) ) {
        $tax_query[] = array(
            \'taxonomy\' => $my_taxonomy,
            \'field\' => \'slug\', 
            \'terms\' => get_query_var( \'industry\' )
        );
    }

    // set all previously determined values to the query
    $q->set( "tax_query", $tax_query );
}
如何正确转义通过get_query_var( \'industry\' )?

我是否使用esc_sql 功能,就像这样esc_sql( get_query_var( \'industry\' ) ) ? 处理查询变量转义的正确方法是什么?

非常感谢,Dasha

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

的功能pre_get_posts 操作使用WP\\U查询对象(http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts)

当使用诸如get\\u posts之类的函数或诸如WP_Query 和WP\\u User\\u查询,WordPress takes care of the necessary sanitization 在查询数据库时。然而,当从自定义表中检索数据或以其他方式对数据库执行直接SQL查询时,适当的清理取决于您。

--Code Tuts+: Data Sanitization and Validation With WordPress

因此,在这种情况下,您不必转义查询变量。

结束

相关推荐

Disable escaping html

我在用SyntaxHighlighter Evolved 突出显示代码示例。E、 g。[csharp] string s = \"text\"; List<int> numbers = new List<int>(); [/csharp] 当我第一次保存它时,没关系,但编辑wordpress时,文本会更改为[csharp] string s = &quot;text&quot;; List&lt;int&am