Как вывести постоянную ссылку на термин в сообщениях WordPress в цикле? - PullRequest
1 голос
/ 23 сентября 2010

У меня есть серия постов в пользовательском типе постов, которые все имеют термин в таксономической «коллекции». Каждый пост связан не более чем с одним термином в таксономии «коллекции». Я хочу создать ссылку под каждым сообщением, в которой будет что-то вроде «Еще в этой коллекции», как я могу динамически создать ссылку на термин, к которому она относится?

Когда я использую следующий фрагмент, он показывает список терминов в виде ссылок. Мне просто нужна постоянная ссылка, чтобы я мог создать эту пользовательскую ссылку, а не имя термина, связанного с ней.

<?php echo get_the_term_list( $post->ID, 'collection', '', ', ', '' ); ?>

То, что я пытаюсь сделать, - это динамический способ написать что-то вроде этого:

<a href="TERM_PERMALINK">More in this Collection</a>

Ответы [ 4 ]

11 голосов
/ 04 января 2011

Вы также можете использовать функцию get_term_link () .

http://codex.wordpress.org/Function_Reference/get_term_link

Вот небольшой пример:

$terms = get_the_terms($post->ID, 'my_taxonomy');

if (! empty($terms)) {
  foreach ($terms as $term) {
    $url = get_term_link($term->slug, 'my_taxonomy');
    print "<a href='{$url}'>{$term->name}</a>";
  }
}
1 голос
/ 11 мая 2016

Вот пример использования get_term_link () и фактического вывода ссылки, как вы описали.

$collections = get_the_terms($post->ID, 'collection');

foreach ($collections as $collection){
    echo "<a href='".get_term_link($collection->slug, 'collection')."'>".$collection->name."</a>";
}
0 голосов
/ 05 января 2017

Может быть, это будет работать:

$cats = wp_get_post_terms($postId, 'cat name');
$category_link = get_term_link($cats[0]);
0 голосов
/ 23 сентября 2010

Вы захотите использовать get_the_term, чтобы получить массив терминов, используемых для публикации. Затем вы можете перебрать этот массив, чтобы создать постоянные ссылки.

get_the_terms( $post->ID, 'collection' )

Это вернет массив, который соответствует следующей структуре:

Array
(
    [0] => stdClass Object
        (
            [term_id] => ...
            [name] => ...
            [slug] => ...
            [term_group] => ...
            [term_taxonomy_id] => ...
            [taxonomy] => collection
            [description] => ...
            [parent] => ...
            [count] => ...
        )
)

Простой цикл по этому массиву позволит вам проанализировать ваши постоянные ссылки в любом формате, который вы хотите, хотя я лично рекомендую http://site.url/TAXONOMY/TERM.

$collections = get_the_terms( $post->ID, 'collection' );

foreach( $collections as $collection ) {
    $link = get_bloginfo( 'url' ) . '/collection/' . $collection->slug . '/';
    echo $link;
}

В моем фрагменте кода я повторяю постоянную ссылку. Вы можете делать с ним все, что захотите (сохранить его в массиве, использовать в определении ссылки или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...