Дезинфекция при использовании столбов, где крючок


Я изменяю запрос WordPress, используя крючок posts_where, когда (пользовательская) переменная запроса установлена следующим образом:

add_filter('posts_where', 'my_posts_where' );
function my_posts_where( $where ){
    global $wp_query;

    if( isset( $wp_query->query_vars['customvar'] )) {
        $custom_Var = $wp_query->query_vars['customvar'];
        $where .= " AND wp_MyTable.Column ='".$custom_Var."' ";
    }
    return $where;
}

Это хорошо работает, но я хочу очистить это. В частности, я пробовал использовать метод $wpdb->prepare():

$where .= $wpdb->prepare(" AND wp_MyTable.Column = %s", $custom_Var);

Но это не работает (я просто получаю пустую страницу). Почему это так и есть ли другой/лучший способ очистки переменной?

Author: Stephen Harris, 2011-11-01

1 answers

Ваш последний фрагмент prepare() должен работать нормально, убедитесь, что в вашей функции $wpdb объявлен глобальным.

Также пустая страница кажется экстремальной, включите WP_DEBUG, если еще нет, и посмотрите, есть ли какие-либо конкретные ошибки, которые ее вызывают.

 1
Author: Rarst, 2011-11-01 19:41:35