• Resuelto wordpressero

    (@wordpressero)


    Hola a tod@s,

    En primer lugar y antes de nada quisiera presentarme, soy un estudiante de informática y como proyecto fin de carrera estoy haciendo un periódico deportivo digital en WordPress. El diseño del mismo lo he desarrollado yo íntegramente pero quiero darle un aire lo más profesional posible y quisiera que tanto en mi página principal como en las categorías, las entradas se ordenen en dos columnas (dos columnas de entradas, no el contenido de las entradas a dos columnas) de la siguiente forma:

    En las categorías, quiero que las entradas vayan ordenándose según el orden de inserción (la más nueva, arriba a la izquierda; la segunda más nueva, arriba a la derecha; la tercera más nueva, debajo de la primera,…) de esta forma:

    http://img688.imageshack.us/img688/5778/esquemacategorias.png

    En la página principal, quiero que la 1ª noticia sea la 1ª de la categoría fútbol (por ejemplo), la 2ª noticia sea la 1ª de la categoría baloncesto, la 3ª noticia sea la 1ª de la categoría tenis, etc., es decir, que en mi portada tenga siempre la última noticia insertada en cada una de mis categorías:

    http://img99.imageshack.us/img99/2610/esquemaportada.png

    He leído que se podría hacer mediante loops pero el problema que tengo es que no estoy muy puesto en ese tema y estoy haciendo muchas probaturas sin éxito. ¿Tiene alguien el código (exacto o aproximado) de cómo se haría y, si es posible, adjuntar una pequeña explicación que me pueda hacer entenderlo? Como digo, me estoy volviendo loco y es lo último que me falta (referente al diseño) para terminar mi proyecto.

    Espero haber explicado bien lo que necesito. No obstante, si algo no os ha quedado claro, podéis preguntar y trataré de ser más concreto.

    Muchas gracias por vuestra atención y recibid un cordial saludo 😉

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Saludos wordpressero. Felicitaciones por tu carrera y proyecto.

    Para lo que quieres hacer necesitas utilizar los query_post de wordpress.

    Este es un trozo de código que te puede dar una luz.

    <ul>
    <?php query_posts('cat=XX&posts_per_page=XX' );
      while ( have_posts() ) : the_post(); ?>
        <li><a href="<?php the_permalink(); ?>" title="the_title() ); ?>" rel="bookmark"></a></li>
      <?php endwhile; wp_reset_query(); ?>
    </ul>

    Se trata de una lista desordenada de elementos, paso a describirte las partes más importantes:

    cat=XX donde las xx es la ID (un identificador numérico)de tu categoría.

    posts_per_page=XX donde xx es la cantidad de entradas que quierse mostrar. Si colocas 1 o 100 ya dependerá de cuanto quieras mostrar.

    Este código lo colocas donde desees que tu lista de elementos aparesca. Lo más simple es repetir este bloque de código tantas veces como categorías necesites mostrar (podrias usar un for para repetir el bloque de código y un array donde guardes las ID para cambiar la cat).

    Esto puede ayudarte en la página principal. Para las categorías solo tendrías que eliminar cat=XX& y solo indicar el número de entradas a mostrar.

    La respuesta te puede parecer algo corta pero leyendo el link de arriba seguramente entenderás mejor.

    Intenta eso y ve si te resulta.

    Nota: Disculpa si el post esta algo mal redactado.

    Iniciador del debate wordpressero

    (@wordpressero)

    Muchas gracias Shinjiru_fred

    Bien, he conseguido hacer lo de las categorías y separar los posts en dos columnas pero aún me falla algo: los posts van en zig-zag:

    http://img138.imageshack.us/img138/4646/capturali.png

    Este es mi código:

    <?php if (have_posts()) : ?>
    <div>
    <?php query_posts( ‘cat=3&posts_per_page=1′ );
    while (have_posts()) : the_post(); ?>
    
    <div <?php post_class() ?> id=”post-<?php the_ID(); ?>”>
    <h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title_attribute(); ?>”><?php the_title(); ?></a></h2>
    <div><?php the_excerpt(); ?></div>
    </div>
    <?php endwhile; ?>
    </div>
    <div>
    <?php query_posts( ‘cat=4&posts_per_page=1′ );
    while (have_posts()) : the_post(); ?>
    
    <div <?php post_class() ?> id=”post-<?php the_ID(); ?>”>
    <h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title_attribute(); ?>”><?php the_title(); ?></a></h2>
    <div><?php the_excerpt(); ?></div>
    </div>
    <?php endwhile; ?>
    </div>
    <?php else : ?>
    No hay nada
    <?php endif; ?>

    ¿Cómo podría conseguir que estén alineados?

    ¡Gracias otra vez por vuestra ayuda!

    Iniciador del debate wordpressero

    (@wordpressero)

    Hola otra vez Shinjiru_fred!
    Ya he solucionado todos los problemas (tengo el diseño de mi página exactamente como quería) excepto uno:
    Al hacer lo mismo en mi category.php me ha surgido un problema:
    Empiezo con esta parte de código:

    <?php if (have_posts()) : ?>
    <div class=»col-left»>
    <?php query_posts( ‘posts_per_page=4’ );
    while (have_posts()) : the_post(); ?>

    y sí me muestra 4 posts, pero son los últimos 4 posts que he escrito en cualquier categoría. Es decir, si entro en mi categoría 3 puedo ver posts de otras categorías si han sido los últimos que he escrito. ¿A qué puede deberse? Obviamente, quiero que me aparezcan en cada categoría los posts de esa categoría.

    He probado con:

    <?php if (is_category(3)) : ?>
    <?php query_posts( ‘cat=3&showposts=7’ );
    while (have_posts()) : the_post(); ?>

    elseif (is_category(4)) :

    elseif (is_category(5)) :


    <?php endif; ?>

    Y me sale bien pero claro, tengo 84 categorías y debería hacer 84 if…
    ¿Hay alguna forma de omitir todo esto y que únicamente coja las entradas de la categoría en la que me encuentre?

    Gracias otra vez 😉

    Saludos wordpressero.

    Puedes utilizar este código que suelo emplear para esos casos.

    Click para ver el código

    Es una función que puedes agregar a tu functions.php y llamarla donde quieras que funcione con:

    my_related_posts();

    Si al agruegarla te da un error quita las etiquetas < ? php ? > que envuelven dicha función.
    Como veras no muestra la entrada que se está leyendo.

    Ojo, si tienes una entrada con dos o más categoría esta función se repetirá mostrando tantas entradas como categorías tengas.

    Cuentanos que tal te va.

    Off: Es extraño, esta es una segunda respuesta. La primera la veo unicamente cuando estoy logueado… No se si sea algún bug del foro.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘¿Cómo mostrar dos columnas de entradas en WordPress‏‏?’ está cerrado a nuevas respuestas.