Как получить tag_description в каждом шаблоне WordPress?

Я сделал этот сценарий,

<?php
function top_tags() {
$tags = get_tags();

if (empty($tags))
return;

$counts = $tag_links = array();
foreach ( (array) $tags as $tag ) {
$counts[$tag->name] = $tag->count;
$tag_links[$tag->name] = get_tag_link( $tag->term_id );
}

asort($counts);
$counts = array_reverse( $counts, true );

$i = 0;
foreach ( $counts as $tag => $count ) {
$i++;
$tag_link = clean_url($tag_links[$tag]);
$tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag ));
if($i < 11){
print "<li><a href=\"$tag_link\">$tag ($count) </a></li>";
}
}
}
?>

Но я не могу получить tag_description за тег. Ничего не показывает если использую $description = tag_description(); в функции foreach.

0

Решение

Как насчет этого:

<?php
function top_tags() {
$tags = get_tags();

if (empty($tags))
return;

$counts = $tag_links = array();
foreach ( (array) $tags as $tag ) {
$counts[$tag->name] = $tag->count;
$tag_links[$tag->name] = get_tag_link( $tag->term_id );
}

asort($counts);
$counts = array_reverse( $counts, true );

$i = 0;
foreach ( $counts as $tag => $count ) {
$i++;
$tag_link = clean_url($tag_links[$tag]);
$tag_description = tag_description(get_term_by('name', $tag, 'post_tag')->term_id);
$tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag ));
if($i < 11){
print "<li><a href=\"$tag_link\">$tag ($count) </a> $tag_description </li>";
}
}
}
?>

Более эффективный способ сделать это (не проверено):

<?php
function top_tags() {
$tags = get_tags();

if (empty($tags))
return;

$counts = $tag_links = array();
foreach ( (array) $tags as $tag ) {
$counts[$tag->name] = $tag->count;
$tag_links[$tag->name] = array( 'url' => get_tag_link( $tag->term_id ), 'description' => $tag->description);
}

asort($counts);
$counts = array_reverse( $counts, true );

$i = 0;
foreach ( $counts as $tag => $count ) {
$i++;
$tag_link = clean_url($tag_links[$tag]['url']);
$tag_description = $tag_links[$tag]['description'];
$tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag ));
if($i < 11){
print "<li><a href=\"$tag_link\">$tag ($count) </a> $tag_description </li>";
}
}
}
?>
1

Другие решения

Просто чтобы прокомментировать вашу идею, которую не стоит использовать, вы можете использовать tag_description внутри вашего foreach цикл как следовать

$description = tag_description($tag->term_id);

Приведенный выше метод не является неправильным, но get_tags уже возвращает описание тега, которое вы можете вернуть следующим образом

$tag->description

РЕДАКТИРОВАТЬ

Чтобы увидеть, что возвращается get_tagsсделайте следующее

$tags = get_tags;
?><pre><?php var_dump($tags); ?></pre><?php
1

По вопросам рекламы [email protected]