web-dev-qa-db-ja.com

WP_Queryで使用されるクエリ変数を正しくエスケープする方法

私はquery_varsを通して追加されたカスタムクエリ変数を持っています。たとえば、「産業」です。

pre_get_postsアクションでは、以下のように '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( get_query_var( 'industry' ) )のように、 esc_sql functionを使用しますか。クエリ変数のエスケープを処理するための正しい方法は何ですか?

ありがとう、ダーシャ

6
dashaluna

pre_get_postsアクションの関数はWP_Queryオブジェクトを使用します( http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Get_postsなどの関数、または WP_Query およびWP_User_Queryなどのクラスを使用する場合、 WordPressはデータベースの照会に必要なサニタイズ の処理を行います。ただし、カスタムテーブルからデータを取得する場合、またはデータベースに対して直接SQLクエリを実行する場合は、適切なサニタイズが必要です。

- Code Tuts +:WordPressによるデータのサニタイズと検証

そのため、この場合は、クエリ変数をエスケープする必要はありません。