Espacio para tags

Inicio Foros WordPress Themes y Diseño Espacio para tags

Este debate contiene 8 respuestas, tiene 2 mensajes y lo actualizó  Boeing hace 6 años, 8 meses.

  • Autor
    Publicaciones
  • #23603

    Boeing
    Participante

    <p>¡Buenas!</p>
    <p>¿Como podría limitar el espacio dedicado a los tags en la pagina principal? Vamos, me refiero que aunque una entraga tenga cinco etiquetas, que solo muestre tres para que no ocupe doble linea. </p>
    <p>La idea es que en la pagina individual sigan saliendo todos.</p>
    <p>Saludos.
    </p>

  • #58687

    almendron
    Participante

    Como siempre, haz una copia de seguridad del archivo que modifiques antes de cambiar nada.

    Archivo index.php del tema. Sustituye la expresión

    <?php the_tags('', ', ', ''); ?>

    por

    <?php $tags = get_the_tags();
    $count=0;
    if ($tags) {
    foreach ($tags as $tag){
    $count++;
    if ($count <= 3) {
    $tag_link = get_tag_link($tag->term_id);
    $html .= "<a href='{$tag_link}' title='Ver todas las entradas en {$tag->name}'>{$tag->name}</a>";
    if ($count < 3) {
    $html .= ', ';
    }
    }
    }
    echo $html;
    }
    ?>

    He puesto que muestre 3 tags. Verás que hay dos condicionales “if ($count <= 3) {” e “if ($count < 3) {

    El segundo es para que añada una coma al final de cada tag excepto en la última. Si quieres mostrar un número distinto, deberás poner el mismo en los dos condicionales.

  • #58690

    almendron
    Participante

    Me acabo de dar cuenta de que cuando haya menos tags que las quieras mostrar, no se mostrarán bien las comas.

    Lo vuelvo a mirar y te digo algo en cuanto pueda.

  • #58695

    almendron
    Participante

    Lo he probado en local con el tema que usas y funciona:

    Archivo index.php del tema. Sustituye la expresión

    <?php the_tags('', ', ', ''); ?>

    por

    <?php $tags = get_the_tags();
    $tagsamostrar=3; // numero maximo de tags a mostrar
    $count=0;
    if ($tags) {
    $count = count($tags);
    if ($count <= $tagsamostrar) {
    echo the_tags('', ', ', '');
    } else { // Si hay mas tags que las establecidas en $tagsamostrar
    $count=0;
    foreach ($tags as $tag){
    $count++;
    if ($count <= $tagsamostrar) {
    $html .= '<a href="'. get_tag_link($tag->term_id). '" title="Ver todas las entradas en ' . $tag->name . '">' . $tag->name . '</a>';
    }
    if ($count < $tagsamostrar) {
    $html .= ', ';
    }
    }
    echo $html;
    }
    }
    ?>

  • #56046

    Boeing
    Participante

    Perfecto.

    ¡Muchas gracias!

  • #56047

    almendron
    Participante

    De nada. Por favor, marca el hilo como resuelto.

  • #58701

    Boeing
    Participante

    Anda, me acabo de dar cuenta de un error rarisimo.

    En la primera entrada muestra perfectamente solo los 3 tags, pero en la segunda muestra los tres tags de la entrada mas los 3 tags de la entrada anterior, en la tercer, los tres tags propios y los 6 tags de las entradas anterior.

    En la segunda pagina la primera entrada muestra los tags correctos pero con las siguientes entradas pasa lo mismo.

    Lo estoy probando en localhost ya que estoy adaptando el theme a mis gustos, pero lo subí para probar si mantenía el fallo y sigue pasando lo mismo.

    ¿Por que sera?

  • #58702

    almendron
    Participante

    Porque no he puesto la variable $html a “cero” al comienzo de cada post 🙂

    Justo debajo de $tagsamostrar=3; // numero maximo de tags a mostrar pones

    $html='';

    y listo.

  • #58703

    Boeing
    Participante

    Ahora si que si, perfecto.

    Y que rapidez.

    ¡Muchas gracias de nuevo!

El foro ‘Themes y Diseño’ está cerrado y no se permiten nuevos debates ni respuestas.

Pin It on Pinterest