Как получить все таксономии почтового типа?


46

Как я могу получить таксономии типа сообщения?

Если у меня есть тип поста, eventи мне нужно узнать список таксономий, которые прикреплены к этому типу поста. Как мне их найти?

Ответы:


36

Эй, ребята, я думаю, я понял! Посмотрев на пару функций в файле taxonomy.php в WordPress, я нашел эту функцию, get_object_taxonomies();которая добилась цели :)

Вот функция

function get_post_taxonomies($post) {
    // Passing an object
    // Why another var?? $output = 'objects'; // name / objects
    $taxonomies = get_object_taxonomies($post, 'objects');

    /*// Passing a string using get_post_type: return (string) post, page, custom...
    $post_type  = get_post_type($post);
    $taxonomies = get_object_taxonomies($post_type, 'objects');*/

    /*// In the loop with the ID
    $theID      = get_the_ID();
    $post_type  = get_post_type($theID);
    $taxonomies = get_object_taxonomies($post_type, 'objects');*/

    // You can also use the global $post

    // edited to fix previous error $taxonomies
    // edited to force type hinting array
    return (array) $taxonomies; // returning array of taxonomies
}

2
См. Это для получения дополнительной информации: codex.wordpress.org/Function_Reference/get_object_taxonomies
Мэнни Флермонд

вау ... полезно знать о get_object_taxonomies (). это только помогло мне
взломать

Привет, спасибо за это, но как заказать их по идентификатору вместо имени?
dh47

Самый простой способ - просто отсортировать их с помощью цикла forили foreach.
Сисир

Да, я получаю с помощью цикла foreach, но получаю заказ по имени$taxonomies = get_object_taxonomies( array( 'post_type' => $post_type ) ); foreach( $taxonomies as $taxonomy ) : // Gets every "category" (term) in this taxonomy to get the respective posts $terms = get_terms( $taxonomy ); ?> <ul class="specials"><?php foreach( $terms as $term ) : ?> <li><h2 ><?php echo $term->name; ?></h2>
dh47

9

get_categories сделает работу.

get_categories('taxonomy=taxonomy_name&type=custom_post_type'); 

(Я думаю, что если я правильно понял вопрос!)
addlovely

3
Дело в том, что у меня нет названия таксономии, вот что я хочу выяснить. У меня есть только название типа сообщения. По названию типа сообщения я хочу узнать все таксономии, которые к нему прикреплены. Спасибо, в любом случае!
Сисир

1

Вы пробовали что-нибудь? что-то вроде этого?

<?php 

$args=array(
  'object_type' => array('event') 
); 

$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    echo '<p>'. $taxonomy. '</p>';
  }
}
?>

1
Посмотрел на get_taxonomies();функцию в кодексе, но у нее очень плохая документация и я не знал, как я могу передать типы сообщений.
Сисир

Извините, этот код возвращает все зарегистрированные таксономии в WordPress.
Сисир
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.