Cómo mostrar las etiquetas de una entrada

30 jun 2014, 23:06:25
Vistas: 41.6K
Votos: 2

Estoy convirtiendo una plantilla HTML en un tema de WordPress y estoy teniendo problemas para mostrar las etiquetas de las entradas dentro del archivo functions.php. Me gustaría agregar el siguiente código en el archivo de funciones con el código HTML. He estado intentando durante varios días y ya he consultado el codex pero nada de lo que pruebo funciona.

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

¿Alguien puede ayudarme con esto?

3
Comentarios

Lo siento, pero no estás proporcionando suficiente información para dar una respuesta clara. El archivo functions.php está destinado a incluir funciones auxiliares personalizadas del tema y no debe generar salida HTML directa. ¿Dónde quieres exactamente que aparezca la salida? ¿Quieres mostrar una lista de etiquetas asignadas en la vista de un post individual?

s1lv3r s1lv3r
30 jun 2014 23:15:04

Lo siento, sí, quiero que la salida aparezca en el post individual. Las etiquetas que asignas a cada post.

user1181153 user1181153
30 jun 2014 23:21:31

¿A través del archivo de funciones? ¿O a través de cualquier archivo?

Brad Dalton Brad Dalton
7 ago 2014 16:07:25
Todas las respuestas a la pregunta 6
2

Creo que estás buscando la función get_tags(). Necesitarías colocarla en el archivo single-post.php (o single.php si tu tema no tiene un single-post.php) (para encontrar el archivo de plantilla correcto siempre puedes consultar la Jerarquía de Plantillas de WordPress).

Para mostrar una lista de etiquetas con la función mencionada anteriormente, necesitarías usar algo como:

<?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 jun 2014 23:33:26
Comentarios

Encantado de ayudar. Por favor, acepta la respuesta si crees que fue útil. Que tengas una buena tarde. :-)

s1lv3r s1lv3r
30 jun 2014 23:54:29

No funciona desde el archivo de funciones.

Brad Dalton Brad Dalton
7 ago 2014 16:11:13
0

Aquí hay una forma de agregar etiquetas de publicación después del contenido solo en publicaciones individuales usando el filtro the_content en una función personalizada desde tu archivo de funciones. Utiliza the_tags

function tags_after_single_post_content($content) {

    // Verificar si es una publicación individual y la consulta principal
    if( is_singular('post') && is_main_query() ) {

        // Mostrar las etiquetas con formato
        $tags = the_tags('<div class="entry-meta">Etiquetado con: ',' • ','</div><br />'); 

        // Concatenar el contenido original con las etiquetas
        $content .= $content . $tags;
    }
    return $content;
}
// Añadir el filtro al contenido
add_filter( 'the_content', 'tags_after_single_post_content' );

Resultado:

Descripción de la imagen aquí

7 ago 2014 16:06:05
1

Código correcto:

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

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

Razón por la cual esta respuesta es incorrecta: porque the_tags debe usarse dentro de The Loop y the_tags no devuelve nada, por lo que el resto del código no hace nada. En esta respuesta, get_the_tags devuelve un array de instancias de etiquetas, así que podemos agregarlas al contenido.

15 jul 2016 05:50:24
Comentarios

Hola, bienvenido a WPSE. ¿Podrías editar tu publicación para explicar por qué este es el código correcto? Las respuestas que solo incluyen código están desaconsejadas aquí ya que no enseñan nada. ¡Gracias!

Tim Malone Tim Malone
15 jul 2016 07:50:24
1

Muestra una lista de etiquetas con enlaces a cada una y una clase específica para cada etiqueta:

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

Por favor, proporciona el enlace a la fuente de tu código.

Brad Dalton Brad Dalton
7 ago 2014 16:10:42
2

Debes usar este código al final del archivo 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 .= 'Etiquetas: ' . implode(', ', $array) . '<br>';
  }

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

Parece que has copiado la respuesta de Artem. ¿Has cambiado algo?

Rup Rup
15 feb 2022 14:52:35

Tal como está escrita actualmente, tu respuesta no es clara. Por favor, [edítala] para añadir detalles adicionales que ayuden a otros a entender cómo esto responde a la pregunta formulada. Puedes encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.

User User
19 feb 2022 23:09:47
1

Hice este código de Arterm con un pequeño cambio

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

¿Entonces el cambio significativo es que has cambiado get_the_tags() por get_tags()?

Rup Rup
16 abr 2024 11:20:06