2016-12-28 13 views
0

Я использую WordPress 4.7 и создал пользовательский тип сообщения и пользовательскую таксономию для него. Мой пользовательский тип сообщения - это «товары», а пользовательская таксономия - «тип». Чтобы получить все таксономии типа, я использовал следующий код.Получить пользовательский список таксономии в пользовательском типе сообщений в WordPress

<?php 
    $terms = get_terms('type'); 
    foreach ($terms as $term) { 
    echo '<p>' .$term->name. '</p>'; 
    } 
?> 

Но он возвратил пустой массив, поэтому я много учился, чтобы найти ответ и нашел подсказку. Я проверил выполненные запросы функцией get_terms ('type'). Они выполнили два важных вопроса.

Первый запрос

SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('type') ORDER BY t.name ASC 

Следующая запрос

SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (10,11) ORDER BY meta_id ASC 

И имеет смысла причину, почему он вернулся пустой массив. Терминология была предоставлена ​​с WordPress4.4, и я использую WordPress4.7. Из-за второго запроса он возвращал пустой запрос. Но теперь я не могу найти правильную функцию, чтобы получить все пользовательские таксономии для моего пользовательского типа сообщений. Я буду очень рад, если кто-нибудь даст мне знать, как это сделать в WordPress4.7 Я не могу использовать более низкую версию только для нее. Спасибо.

ответ

0

get_terms рекомендует добавить массив в качестве аргументов.
В прошлом первым аргументом была таксономия. Это уже не так. Это не имеет значения, но все же это, вероятно, лучшее первое место для начала.

<?php 
$terms = get_terms(array(
    'taxonomy' => 'type', 
)); 
+0

Thanks.But еще возвращать пустой массив, Видели 2 запросы выполняются? Первый правильный запрос для получения всех таксономий. Он возвращает правый массив, Но из-за второго массива они возвращают пустой массив. Я получаю то, как избежать выполнения второго запроса или какой функции я должен использовать вместо get_terms(). –

+0

ОК, он работает сейчас. Благодарю. –

1

Попробуйте этот код

<?php 
    $terms = get_terms(array(
       'taxonomy' => 'type' 
      )); 
    print_r($terms); 

    foreach($terms as $term) { 
     echo '<p>'.$term->name.'</p>'; 
    } 
?> 

Вы можете посмотреть более подробную информацию о get_terms() на here

+1

Спасибо. Но он также возвращает пустой массив –

+1

Пожалуйста, проверьте тип таксономии –