Как отобразить теги записи

30 июн. 2014 г., 23:06:25
Просмотры: 41.6K
Голосов: 2

Я конвертирую HTML шаблон в тему WordPress и у меня возникли проблемы с отображением тегов записи внутри файла functions.php. Я хочу добавить следующий код в файл functions вместе с HTML кодом. Я пытаюсь сделать это уже несколько дней и уже изучил документацию, но ничего из того, что я пробую, не работает.

<div class="tags">
<a href="#" rel="tag">тег 1</a> <a href="#" rel="tag">тег 2</a> <a href="#" rel="tag">тег 3</a> <a href="#" rel="tag">тег 4</a>
</div>

Может кто-нибудь помочь с этим?

3
Комментарии

Извините, но вы предоставляете недостаточно информации для четкого ответа. Файл functions.php предназначен для включения пользовательских вспомогательных функций темы и не должен содержать прямого вывода HTML. Где именно вы хотите выводить результат? Вы хотите выводить список назначенных меток на странице отдельной записи?

s1lv3r s1lv3r
30 июн. 2014 г. 23:15:04

Извините, да, я хочу, чтобы вывод был на странице отдельной записи. Те метки, которые назначаются каждой записи.

user1181153 user1181153
30 июн. 2014 г. 23:21:31

Через файл functions.php? Или через любой другой файл?

Brad Dalton Brad Dalton
7 авг. 2014 г. 16:07:25
Все ответы на вопрос 6
2

Я думаю, вы ищете функцию get_tags(). Её нужно разместить в файле single-post.php (или single.php, если ваша тема не имеет single-post.php) (чтобы найти правильный шаблонный файл, вы всегда можете посмотреть Иерархию шаблонов WordPress).

Чтобы вывести список меток с помощью указанной выше функции, вам нужно использовать что-то вроде:

<?php $tags = get_tags(); ?>
<div class="tags">
<?php foreach ( $tags as $tag ) { ?>
    <a href="<?php echo get_tag_link( $tag->term_id ); ?> " rel="tag"><?php echo $tag->name; ?></a>
<?php } ?>
</div>
30 июн. 2014 г. 23:33:26
Комментарии

Рад помочь. Пожалуйста, отметьте ответ как решение, если он был полезен. Хорошего вечера. :-)

s1lv3r s1lv3r
30 июн. 2014 г. 23:54:29

Не работает из файла функций.

Brad Dalton Brad Dalton
7 авг. 2014 г. 16:11:13
0

Вот один из способов добавления тегов записи после содержимого только на отдельных страницах записей с использованием фильтра the_content в пользовательской функции из файла functions. Используется функция the_tags

function tags_after_single_post_content($content) {

    if( is_singular('post') && is_main_query() ) {

        $tags = the_tags('<div class="entry-meta">Метки: ',' • ','</div><br />');

        $content .= $content . $tags;
    }
    return $content;
}
add_filter( 'the_content', 'tags_after_single_post_content' );

Результат:

Отображение тегов после содержимого записи

7 авг. 2014 г. 16:06:05
1

Правильный код:

function tags_after_single_post_content($content) {
  $posttags = get_the_tags();
  if ($posttags) {
    $array = [];
    foreach($posttags as $tag) {
      $array[] = '<a href="/tag/' . $tag->slug . '/">' . $tag->name . '</a>';
    }
    $content .= 'Метки: ' . implode(', ', $array) . '<br>';
  }

  return $content;
}
add_filter( 'the_content', 'tags_after_single_post_content' );

Причина, по которой этот ответ неверен, заключается в том, что the_tags должен использоваться внутри The Loop, а the_tags ничего не возвращает, поэтому остальной код не выполняется. В этом ответе get_the_tags возвращает массив экземпляров меток, которые мы можем добавить к контенту.

15 июл. 2016 г. 05:50:24
Комментарии

Приветствую на WPSE. Не могли бы вы отредактировать свой ответ, чтобы объяснить, почему этот код является правильным? Ответы, содержащие только код, не приветствуются, так как они ничему не учат. Спасибо!

Tim Malone Tim Malone
15 июл. 2016 г. 07:50:24
1

Отображает список меток со ссылками на каждую из них и специальным классом для каждой метки:

$tags = get_tags();
$html = '<div class="post_tags">';
    foreach ( $tags as $tag ) {
       $tag_link = get_tag_link( $tag->term_id );

       $html .= "<a href='{$tag_link}' title='Метка {$tag->name}' class='{$tag->slug}'>";
       $html .= "{$tag->name}</a>";
    }
$html .= '</div>';
echo $html;
7 авг. 2014 г. 15:34:23
Комментарии

Пожалуйста, укажите ссылку на источник вашего кода.

Brad Dalton Brad Dalton
7 авг. 2014 г. 16:10:42
2

Данный код необходимо добавить в конец файла functions.php:

function tags_after_single_post_content($content) {
  $posttags = get_the_tags();
  if ($posttags) {
    $array = [];
    foreach($posttags as $tag) {
      $array[] = '<a href="/tag/' . $tag->slug . '/">' . $tag->name . '</a>';
    }
    $content .= 'Метки: ' . implode(', ', $array) . '<br>';
  }

  return $content;
}
add_filter( 'the_content', 'tags_after_single_post_content' );
15 февр. 2022 г. 14:20:48
Комментарии

Похоже, вы просто скопировали ответ Артема. Вы что-то изменили?

Rup Rup
15 февр. 2022 г. 14:52:35

В текущем виде ваш ответ непонятен. Пожалуйста, [отредактируйте], чтобы добавить дополнительные детали, которые помогут другим понять, как это отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы, в справочном центре.

User User
19 февр. 2022 г. 23:09:47
1

Я создал этот код из артема с небольшими изменениями

function tags_after_single_post_content($content) {
$posttags = get_tags();
if ($posttags) {
$array = [];
foreach($posttags as $tag) {
$array[] = '<a href="/tag/' . $tag->slug . '/">' . $tag->name . '</a>';
}
$content .= '<div class="wulanhastag">Теги: ' . implode(', ', $array) . '</div>';
}
return $content;
}
add_filter( 'the_content', 'tags_after_single_post_content' );
15 апр. 2024 г. 21:58:05
Комментарии

Значит, основное изменение заключается в том, что вы заменили get_the_tags() на get_tags()?

Rup Rup
16 апр. 2024 г. 11:20:06