мета-запрос настраиваемых полей WordPress: найти значение ключа или любые значения - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь получить сообщения с мета-запросом из формы, выбранной из выпадающего меню. Все работает хорошо, за исключением случаев, когда я выбираю первый вариант для обоих вариантов выбора (где значение параметра отмечено «*» в моем примере). Я наивно пробовал значение параметра * или Все, но ничего не работает.

Эти первые варианты должны получить все сообщения (из определенной категории) независимо от того, какие ключевые значения у них есть (даже у них нет таковых). Он должен в основном игнорировать любые ключевые значения.

Это моя форма:

<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">


            <label for="inhalation">Inhalation :</label>
                <select name="inhalation" id="inhalation">
                        <option value="*">Any value</option>
                        <option value="Directe">Directe</option>
                        <option value="Indirecte">Indirecte</option>
                        <option value="Directe / Indirecte">Directe / Indirecte</option>
                </select>

             <label for="inhalation">Profil :</label>
                <select name="profil" id="profil">
                        <option value="*">Any value</option>
                        <option value="Débutant">Débutant</option>
                        <option value="Avancé">Avancé</option>
                        <option value="Débutant / Avancé">Débutant / avancé</option>
                        <option value="Expert">Expert</option>
                </select>


        <button>Filtrer les revues</button>
        <input type="hidden" name="action" value="myfilter">
        <input type="hidden" name="current-cat" value="<?php echo esc_html( $postcat[0]->term_id ); ?>">

    </form>

А это мой php-запрос (данные формы отправляются через Jquery):

function my_filter_function(){
$args = array(
    'orderby' => 'date',
    'order' => 'DESC',
    'posts_per_page' => 10,
    'cat' => $_POST['current-cat'],
    'meta_query' => array(
    array(
        'key' => 'Inhalation',
        'value' => $_POST['inhalation']
    ),
    array(
        'key' => 'Profil',
        'value' => $_POST['profil']
    ))
);


$query = new WP_Query( $args );

Как вы могли заметить, я не кодер. Извините заранее, если вопрос может показаться глупым. Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 02 мая 2018

Установите значение по умолчанию all или что-то подобное, относящееся к значению всех типов. Затем создайте аргумент запроса и добавьте его в мета-запрос, если пользователь не ищет все типы. Таким образом, он будет добавлен в мета-запрос для явного поиска при необходимости, поскольку вы можете предположить, что all учитывает все в базе данных.

function my_filter_function() {

    $args = array(
        'orderby' => 'date',
        'order' => 'DESC',
        'posts_per_page' => 10,
        'cat' => $_POST['current-cat'],
        'meta_query' => array()
    );

    if ( 'all' != $_POST['inhalation'] ) {

        $args['meta_query'][] = array(
            'key' => 'Inhalation',
            'value' => $_POST['inhalation']
        );

    }

    if ( 'all' != $_POST['profil'] ) {

        $args['meta_query'][] = array(
            'key' => 'Profil',
            'value' => $_POST['profil']
        );

    }

    $query = new WP_Query( $args );

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...