Cum să afișezi etichetele (tag-urile) articolelor

30 iun. 2014, 23:06:25
Vizualizări: 41.6K
Voturi: 2

Convertesc un șablon HTML într-o temă WordPress și întâmpin dificultăți în afișarea etichetelor articolelor în fișierul functions.php. Aș dori să adaug următorul cod HTML în fișierul functions. Am încercat de câteva zile și am consultat deja codexul, dar nimic din ce am încercat nu funcționează.

<div class="tags">
<a href="#" rel="tag">etichetă 1</a> <a href="#" rel="tag">etichetă 2</a> <a href="#" rel="tag">etichetă 3</a> <a href="#" rel="tag">etichetă 4</a>
</div>

Poate cineva să mă ajute cu acest lucru?

3
Comentarii

Scuze, dar nu oferi suficiente informații pentru a da un răspuns clar. Fișierul functions.php este menit să includă funcții personalizate pentru temă și nu ar trebui să genereze direct output HTML. Unde anume dorești să apară acest output? Vrei să afișezi o listă de tag-uri asignate într-un articol individual?

s1lv3r s1lv3r
30 iun. 2014 23:15:04

Scuze, da, vreau ca output-ul să apară în articolul individual. Tag-urile pe care le atribui fiecărui articol.

user1181153 user1181153
30 iun. 2014 23:21:31

Prin fișierul functions.php? Sau prin orice alt fișier?

Brad Dalton Brad Dalton
7 aug. 2014 16:07:25
Toate răspunsurile la întrebare 6
2

Cred că cauți funcția get_tags(). Va trebui să o plasezi în fișierul single-post.php (sau single.php dacă tema ta nu are un fișier single-post.php) (pentru a găsi fișierul șablon corect poți consulta întotdeauna Ierarhia șabloanelor Wordpress).

Pentru a afișa o listă de etichete cu funcția menționată mai sus, ai nevoie de ceva similar cu:

<?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 iun. 2014 23:33:26
Comentarii

Mă bucur să ajut. Te rog să accepți răspunsul dacă consideri că a fost util. Seară frumoasă. :-)

s1lv3r s1lv3r
30 iun. 2014 23:54:29

Nu funcționează din fișierul functions.

Brad Dalton Brad Dalton
7 aug. 2014 16:11:13
0

Iată o modalitate de a adăuga etichete după conținut doar pe articolele individuale folosind filtrul the_content într-o funcție personalizată din fișierul functions. Folosește the_tags

function tags_after_single_post_content($content) {

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

$tags = the_tags('<div class="entry-meta">Etichetat cu: ',' • ','</div><br />'); 

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

Rezultat:

prezentare rezultat etichete după conținut

7 aug. 2014 16:06:05
1

Cod corect:

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 .= 'Etichete: ' . implode(', ', $array) . '<br>';
  }

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

Motivul pentru care acest răspuns este greșit este pentru că the_tags ar trebui folosit în interiorul The Loop și the_tags nu returnează nimic, astfel încât restul codului nu face nimic. În acest răspuns, get_the_tags returnează un array de instanțe de etichete, astfel încât le putem adăuga la conținut.

15 iul. 2016 05:50:24
Comentarii

Salut, bine ai venit pe WPSE. Poți, te rog, să editezi postarea ta pentru a explica de ce acesta este codul corect? Răspunsurile care conțin doar cod sunt descurajate aici, deoarece nu învață pe nimeni nimic. Mulțumesc!

Tim Malone Tim Malone
15 iul. 2016 07:50:24
1

Afișează o listă de etichete cu linkuri către fiecare și o clasă specifică pentru fiecare etichetă:

$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='Eticheta {$tag->name}' class='{$tag->slug}'>";
       $html .= "{$tag->name}</a>";
    }
$html .= '</div>';
echo $html;
7 aug. 2014 15:34:23
Comentarii

Te rog să oferi un link către sursa codului tău.

Brad Dalton Brad Dalton
7 aug. 2014 16:10:42
2

Trebuie să utilizați acest cod la sfârșitul fișierului 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 .= 'Etichete: ' . implode(', ', $array) . '<br>';
  }

  return $content;
}
add_filter( 'the_content', 'tags_after_single_post_content' );
15 feb. 2022 14:20:48
Comentarii

Se pare că ai copiat pur și simplu răspunsul lui Artem. Ai schimbat ceva?

Rup Rup
15 feb. 2022 14:52:35

În forma actuală, răspunsul tău este neclar. Te rugăm să [editezi] pentru a adăuga detalii suplimentare care să ajute pe alții să înțeleagă cum abordează aceasta întrebarea pusă. Poți găsi mai multe informații despre cum să scrii răspunsuri bune în centrul de ajutor.

User User
19 feb. 2022 23:09:47
1

am făcut acest cod de la arterm cu mici modificări

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">Etichete: ' . implode(', ', $array) . '</div>';
}
return $content;
}
add_filter( 'the_content', 'tags_after_single_post_content' );
15 apr. 2024 21:58:05
Comentarii

Deci schimbarea semnificativă este că ai înlocuit get_the_tags() cu get_tags()?

Rup Rup
16 apr. 2024 11:20:06