Запрос сообщений с помощью раскрывающегося меню настраиваемых полей

Я создал этот архив категорий, который содержит таблицу из 100 сообщений. Таблица содержит 3 настраиваемых поля (Пол, Континент, Сектор), а также есть четвертое («Общее» с единственным значением «Все»), которое не находится внутри таблицы, а их значения для каждого сообщения находятся внутри ячеек таблицы каждого запись/пост. Я разместил над таблицей четыре тега выбора (четыре выпадающих меню), которые я хотел бы фильтровать сообщения в зависимости от того, какая опция определенного тега выбора выбрана. Чтобы быть более конкретным, когда пользователь выбирает, например, тег «Континент» и опцию «Европа», я бы запрашивал все сообщения со значением настраиваемого поля «Европа». Можно ли сделать это с помощью оператора if и как именно я буду его использовать? Теги выбора следующие:

Для пользовательского поля Всего

<select>
<option value="all">All</option>
</select> 

Для настраиваемого поля Пол

<select>
<option value="gender">Select Gender</option>
<option value="male" >Male</option>
<option value="female">Female</option>
</select>

Для произвольного поля Континент

<select>                    
<option value="continent">Select Continent</option>
<option value="europe">Europe</option>
<option value="america">America</option>
<option value="africa">Africa</option>
<option value="asia">Asia</option></select>

Для настраиваемого поля Сектор

<select> 
<option value="sector">Select Sector</option>
<option value="retail">FMCG/Retail</option>
<option value="various">Various</option>
<option value="finance">Finance</option>
<option value="se">SE</option>
<option value="energy">Energy</option>
<option value="education">Education</option>
<option value="fb">F&B</option>
<option value="environment">Environment </option>
<option value="telco">Tech/telco </option>
<option value="fashion">Fashion </option>
<option value="media">Media </option>
<option value="construction">Construction </option>
<option value="health">Health </option>
<option value="tech">Tech </option>
<option value="industry">Industry </option>
</select>

person Nancy Giannaki    schedule 01.09.2015    source источник
comment
Что я думаю, это можно сделать через AJAX. Это означает, что когда пользователь нажимает на Европу, приходят все сообщения, касающиеся Европы, а когда пользователь нажимает ВСЕ, должны появляться все сообщения. Это ?   -  person Nana Partykar    schedule 01.09.2015
comment
Да, это именно то, что я хочу, но, поскольку я не настолько опытен в этом, я не знаю, как поместить это в код.   -  person Nancy Giannaki    schedule 01.09.2015
comment
Хорошо.. подождите 5 мин.   -  person Nana Partykar    schedule 01.09.2015
comment
Вы можете использовать публикацию запроса по мета-ключу и мета-значению codex.wordpress.org/Class_Reference/WP_Meta_Query. , wordpress.org/support/topic/ . Попробуйте этот пример кода   -  person ManoharSingh    schedule 01.09.2015
comment
Попробуйте также этот scribu.net/wordpress/advanced-metadata-queries.html   -  person ManoharSingh    schedule 01.09.2015
comment
Да, но как связать запросы с тегом select и опциями?   -  person Nancy Giannaki    schedule 01.09.2015
comment
Используя Form POST, вы можете передавать выбранные значения тегов в запросы ‹form id=brandsearch method=post action=› ‹select name=brand id=brand› ‹option value=›All‹/option› ‹option value=1›1‹/ option› ‹/select› ‹/form› ‹?php if (!empty($_POST['brand'])) : // Ваши запросы здесь endif; ?›   -  person ManoharSingh    schedule 01.09.2015
comment
Я попробую это. Большое спасибо!   -  person Nancy Giannaki    schedule 01.09.2015


Ответы (1)


Попробуйте это, чтобы запросить сообщение по мета-ключу и значению

<form name="res" action="" method="post">
<select name="gender">
<option value="gender">Select Gender</option>
<option value="male" >Male</option>
<option value="female">Female</option>
</select>
<input type="submit" name="submit" value="submit">
</form>
<?php
if (!empty($_POST['submit'])) :
$result = query_posts( array(
    'post_type' => 'your post type name',
    'meta_query' => array(
        array(
            'key' => 'gender',
            'value' => 'male',          
        ),
        array(
            'key' => 'continent',
            'value' => 'USA',
        ),
        array(
            'key' => 'all',
            'value' => 'all',
        )
    )
) );

print_r($result);

?>
person ManoharSingh    schedule 01.09.2015