Как получить термин WordPress, присоединенный к Сообщению?

Как получить все условия WordPress, присоединенные к Сообщению и Другому типу Сообщения? Принятый я не знаю / заботы о таксономии, идентификатор имени/термина термина и т.д., единственной вещью, которую я знаю, является post_id.Спасибо.

0
07.02.2012, 18:26
3 ответа

Существует функционально-специализировано для этого, это называют wp_get_post_terms().

К сожалению, действительно необходимо заботиться о таксономии. Если Вы не укажете таксономию, то она возвратит все условия "post_tags":

$terms = wp_get_post_terms( $post_id, $taxonomy, $args )
  • $post_id идентификатор сообщения, Вы работаете с (значения по умолчанию к 0)
  • $taxonomy название таксономии, для которой Вы хотите получить условия (значения по умолчанию к "post_tags"
  • $args массив переопределений других параметров по умолчанию (см. Кодекс для деталей),
2
19.02.2020, 23:38
  • 1
    привет, спасибо. но если я только передам $post_id, то возвратит пустой массив, если текущий тип сообщения не будет иметь присоединенного –  takien 07.02.2012, 18:54
  • 2
    Точно, вот почему я сказал, что действительно необходимо заботиться о таксономии. Если Вы не передаете в таксономии, это связало условия с "post_tags" таксономией. спасибо –  EAMann 07.02.2012, 19:17

Хм. Вы могли попытаться получить весь taxonomies и получить все условия, связанные с идентификатором сообщения и таксономией.

$taxonomies = get_taxonomies( '', 'names' );
$terms = wp_get_object_terms($post->ID, $taxonomies);

У меня не было шанса попробовать это самого.

2
19.02.2020, 23:38
  • 1
    таксономии никаких тегов почти там, но в этом случае, я не знаю 'имена' наконец, я получил это: $custom_post_type = get_post_type_object(get_post_type(get_the_id())); echo '<pre>'; $args = Array('object_type'=>array($custom_post_type->name)); $all_tax = get_taxonomies($args); foreach($all_tax as $tax){ $all_terms = wp_get_object_terms(get_the_id(), $tax); print_r($all_terms); } echo '</pre>'; Спасибо, решенный :) –  takien 07.02.2012, 18:55
  • 2
    'называет', не таксономия. Это - тип возврата. Так get_taxonomies ('' ', имена') возвратил бы массив имен таксономии. –  Ryan Meier 07.02.2012, 19:14
  • 3
    , о, хорошо. но если я не передам первый спор с типом объекта, то он возвратит весь taxonomies, не только, который присоединен к текущему сообщению. вот различие: echo '<pre>'; print_r(get_taxonomies('','names')); echo '</pre>'; По сравнению с $tax_args = Array('object_type'=>array($post_type_name)); echo '<pre>'; print_r(get_taxonomies($tax_args,'names')); echo '</pre>'; спасибо так или иначе спасибо :) –  takien 07.02.2012, 22:11

Для получения всех условий для всего taxonomies, присоединенного к сообщению, можно использовать эту функцию:

function my_post_terms() {

    // Get an array of all taxonomies for this post
    $taxonomies = get_taxonomies( '', 'names' );

    // Are there any taxonomies to get terms from?
    if ( $taxonomies ) {    

        // Call the wp_get_post_terms function to retrieve all terms. It accepts an array of taxonomies as argument. 
        $arr_terms = wp_get_post_terms( get_the_ID(), array_values( $taxonomies ) , array( "fields" => "names" ) );

        // Convert the terms array to a string
        $terms = implode( ' ',$arr_terms );

        // Get out of here
        return $terms;
    }
}

Теперь можно использовать его в шаблонах:

<?php echo my_post_terms(); ?>

Если Вам нужен список HTML всех терминов или ссылок, просто цикл по массиву $arr_terms.

1
19.02.2020, 23:38

Теги

Похожие вопросы