• Resuelto delhorno

    (@delhorno)


    Hola! este es mi primer mensaje

    Me gustaría ver si pueden ayudarme, estoy creando mi propio theme y tengo un problema con el loop, ya que tengo conocimientos nulos sobre php

    Lo que me gustaría hacer es completar una estructura que he diseñado donde:

    los post se ordenan por orden descendente, o sea como viene normalmente pero:

    el 1º y 2º post están en una capa de la estructura con un diseño
    del 3º al 5º están colocados en otra capa diferente y tienen otro css distinto, tamaño etc
    del 6º al 11º también los coloco en otra capa dirferente con otro diseño de columnas.

    Como sería este loop? serían 3 loops diferentes? me podeis ayudar?

    Muchas gracias

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • No necesitas PHP para lograr esto, con CSS, una buena estructura de capas y los correctos selectores puedes ingeniártelas para dar un estilo distinto a cada entrada mostrada en tu loop:

    http://www.w3schools.com/cssref/css_selectors.asp

    Pero si quieres controlarlo por PHP de una forma más sencilla, entonces deberás asignar un estilo distinto a cada entrada mostrada en función de su orden. Para ello debes utilizar $wp_query->current_post dentro del Loop. Lo cual devolverá el número de orden de la entrada mostrándose en ese instante. Es decir podrás crear un condicional o un switch en función de su contenido, por ejemplo:

    <?php if ( $wp_query->current_post <= 2 ) { ?>
        <div class='entrada-1-2'>
            <?php the_content(); ?>
        </div>
    <?php } ?>

    Ese código mostrará la primera y segunda entrada dentro de un div cuya clase CSS será «entrada-1-2».

    Aqui tienes información detallada sobre el Loop y WP_Query:

    http://codex.wordpress.org/The_Loop
    http://codex.wordpress.org/Class_Reference/WP_Query

    Iniciador del debate delhorno

    (@delhorno)

    Hola, he probado con este código, pero solo me muestra un post. Y mi pregunta es, los siguientes loops como serían segun la relacción que yo necesito?

    Con CSS no puede hacerse (creo) ya que el loop no está seguido, hay capas de diseño entre los loops por eso creo que se tendrían que crear varios loops.

    Pero como no tengo ni idea de php, no se hacerlo.

    Todo puedes hacerlo en el mismo loop. Solo deberás introducir más comprobaciones con if o switch. Imagina que necesitas crear la siguiente estructura:

    <div class='capa-1'>
       <div class='entrada'>ENTRADA 1, su título, texto y todo lo que quieras mostrar aquí.</div>
       <div class='entrada'>ENTRADA 2, su título, texto y todo lo que quieras mostrar aquí.</div>
    </div>
    
    <div class='capa-2'>
       <div class='entrada'>ENTRADA 3, su título, texto y todo lo que quieras mostrar aquí.</div>
       <div class='entrada'>ENTRADA 4, su título, texto y todo lo que quieras mostrar aquí.</div>
    </div>

    Pues para ello dentro de tu LOOP deberás introducir un código parecido a:

    <div class='capa-1'>
    
    <!-- Empieza tu Loop aquí "have posts etc..." >
    $post_actual = $wp_query->current_post;
    
    <?php if ( $post_actual == 1 || $post_actual == 2 ) { ?>
        <div class='entrada'>
            <?php the_content(); ?>
        </div>
    <?php } ?>
    
    <?php if ( $post_actual == 3 || $post_actual == 4 ) { ?>
    </div> <!-- Se cierra el DIV de capa-1 -->
    <div class='capa-2'>
        <div class='entrada'>
            <?php the_content(); ?>
        </div>
    <?php } ?>
    
    <!-- Termina aquí tu loop "endwhile..." -->
    
    </div> <!-- Se cierra el DIV de capa 2 -->

    Esto es un ejemplo muy simple, para que lo comprendas y te orientes mejor. Es muy suceptible de ser mejorado. En resumen consiste en abrir o cerrar la capa según el post que se esté mostrando. PHP no es difícil ;), puedes encontrar ejemplos sobre como usar IF o SWITCH en los siguientes enlaces:

    http://php.net/manual/es/control-structures.if.php
    http://php.net/manual/es/control-structures.switch.php

    Un saludo, Alejandro Gálvez – OptimalDevs.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Ayuda con loop personalizado’ está cerrado a nuevas respuestas.