Как добавить аргументы к запросу - PullRequest
0 голосов
/ 09 мая 2019

Я использую плагин Toolset для просмотра WP, и они дают нам возможность манипулировать с API. Я пытаюсь добавить аргумент к моему мнению, но он не работает.

вот функция:

add_filter( 'wpv_filter_query', 'add_city_tax', 99, 3 );

function add_city_tax( $query_args, $view_settings, $view_id )
{
    if($view_id == 7706)
    {

            $args = array(
                'tax_query' => array
                    (
                        array
                            (
                                [taxonomy] => 'ville',
                                [field] => 'id',
                                [terms] => Array
                                    (
                                        [0] => 220
                                    ),
                                [operator] => 'IN'
                            ),
                        [relation] => 'OR',
                    ),
            );
    }
    $query_args = new WP_Query( $args );
    return $query_args;
}

страница делает ошибку

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Метод объявления аргументов неверен. Вы не должны создавать такой массив. Пожалуйста, проверьте следующий пример.

    function add_city_tax( $query_args, $view_settings, $view_id ) {
    if($view_id == 7706) {
        $args = array(
            'tax_query' => array(
                array(
                    'taxonomy' => 'ville',
                    'field'    => 'id',
                    'terms'    => array( 220 ),
                    'operator' => 'IN',
                    ),
                'relation' => 'OR',
                ),
            );
    }
    $query_args = new WP_Query( $args );
    return $query_args;
}

А вот документ

Описание При отображении записей со списком View этот фильтр применяется к аргументам, генерируемым параметрами View, до того, как они будут переданы в класс WP_Query.

Фильтры просмотров - wpv_filter_query

Обратите внимание, что фильтры, которые вы можете добавить к представлению, также подключаются здесь, каждый из которых использует свой приоритет, который достигает 100. Чтобы гарантировать, что ваш фильтр работает после них, вам нужно будет использовать номер с более высоким приоритетом. .

Помните, что фильтр может принимать три параметра. Если вы передаете более одного, вам нужно указать его в своем коде, используя четвертый аргумент:

1 add_filter ('wpv_filter_query', 'my_callback_function', 99, 3); аргументы массив $ query_args - аргументы запроса как в WP_Query.

array $ view_settings Настройки просмотра.

int $ view_id Идентификатор представления.

0 голосов
/ 09 мая 2019

Нет, это не работает так.

Я пытался так:

<code>function add_city_tax( $query_args, $view_settings, $view_id ) {
    if($view_id == 7706) {
        $args = array(
            'tax_query' => array(
                array(
                    'taxonomy' => 'ville',
                    'field'    => 'id',
                    'terms'    => array( 220 ),
                    'operator' => 'IN',
                    ),
                'relation' => 'AND',
                ),
            );
    }
    $query_args[] = $args ;
    $msg = '<pre>' . print_r($query_args, true) . '
';mail ('franck@efficonex.fr ',' test ', $ msg);вернуть $ query_args;} add_filter ('wpv_filter_query', 'add_city_tax', 99, 3);

Но это тот же результат без фильтра.

Вот пример API

// Возвращать только сообщения от текущего автора при выводе сообщений типакомпания: add_filter ('wpv_filter_query', 'prefix_show_only_current_author');

function prefix_show_only_current_author( $query_args ) {
    global $current_user;
    $types = (array) $query_args['post_type'];
    if ( !is_admin() && in_array( 'company', $types ) ) {
        $query_args['author'] = empty( $current_user->ID ) ? -1 : $current_user->ID;
    }
    return $query_args;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...