Это продолжение Display Post по таксономии и дочерней таксономии, если они существуют.
Мне нужно отобразить список размещения, сначала по типу размещения, затем по регионам. У меня есть пост-тип, называемый accomodation
таксономия Country
, таксономия accomodation-type
, таксономияRegion
Я нахожусь на странице страны, где я получаю значение страны через
$taxonomy = 'country';
$terms=get_the_terms($post->ID,$taxonomy);
if($terms) {
foreach( $terms as $termcountry ) {
Так что я успешно получаю $termcountry->name;
значение текущей страны.
Затем мне нужно выполнить запрос для размещения на основе этой страны, отфильтрованной по типу размещения и по региону в этом типе. Так и должно быть
- Акк-тип 1
- Регион1
- Акко 1
- Акко 2
- Акко 3
- Регион 2
- Акко 1
- Акко 2
- Регион1
- Acc-тип 2
- так далее….
Я пытаюсь сделать это таким образом
$taxonomy2 = 'accomodation-type';
$termsacc = get_terms("accomodation-type",array('orderby' => 'slug', 'order' => 'ASC'));
//Loop through Acc-Type
foreach ($termsacc as $termaccomodation) {
//Loop through Region in this type
$taxonomyregion = 'region';
$termsreg = get_terms("region",array('orderby' => 'slug', 'order' => 'ASC'));
foreach ($termsreg as $termregion) {
$args = array(
'post_type' => 'accomodation',
'country' => $termcountry->name,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'accomodation-type',
'field' => 'slug',
'terms' => array($termaccomodation->name),
),
array(
'taxonomy' => 'region',
'field' => 'slug',
'terms' => array($termregion->name),
)
)
);
$query = new WP_Query($arg);
//Do the loop
но это не делает этого…. Почесал голову над этим и буду признателен за некоторую помощь / решение, спасибо заранее
любая помощь, пожалуйста?
Привет, Ян. Спасибо за попытку, но это меня еще больше запутало! Мне нужно создать новый пост с новым кодом. буду признателен за помощь
Вы должны запросить все
accomodation
сообщения в этомcountry
, а затем отсортировать их поaccomodation-type
иregion
. Затем вы перебираете посты и сравниваете тип размещения и регион каждого поста с предыдущим постом. Если они отличаются, вы печатаете новый тип размещения или регион, а затем печатаете пост.Вы можете сделать эту сортировку в базе данных или в PHP. В PHP может быть проще, но потребуется много дополнительных запросов к базе данных, потому что вы делаете это
get_post_terms()
для каждого сообщения. В базе данных быстрее, но потребует некоторой фильтрации SQL-запроса, который будет выполнять WordPress.Мой корректор орфографии хочет заменить
accomodation
наaccommodation
, не слишком ли поздно изменить это и в вашем коде?