Ayuda con un poco de php

Inicio Foros WordPress Themes y Diseño Ayuda con un poco de php

Etiquetado: 

Este debate contiene 22 respuestas, tiene 2 mensajes y lo actualizó  LGrusin hace 5 años, 8 meses.

  • Autor
    Publicaciones
  • #68067

    jaimepascual
    Participante

    Hola:
    Acabo de empezar con wordpress y php y ando un poco verde.
    Este es parte del código del archivo index del thema (creo que es el código que interesa…. aunque no estoy seguro).

    <?php if(! $paged || $paged

    <a href="” title=””>
    <a href="”>

    <?php $myExcerpt = get_the_excerpt(); $tags = array("”, “”); $myExcerpt = str_replace($tags, “”, $myExcerpt); echo $myExcerpt; ?>
    <a href="”>Sigue leyendo

    <?php if(! $paged || $paged

    Este tema muestra 10 post (imágenes destacadas de 10 posts). En la página 1 muestra 1 post en grande y 9 dispuestos en 3 filas, con 3 post cada una.
    http://imageshack.us/photo/my-images/13/pagina1g.jpg/
    El problema viene cuando tengo más de 10 post y en la página 2 también se muestran 10 (pero ninguno en grande), 3 filas con 3 post cada una y en la cuarta fila solo se muestra un post quedando, visualmente mal.
    http://imageshack.us/photo/my-images/843/pagina2d.jpg/

    Creo que en este trozo de código es donde tengo que definir que muestre solamente 9 (no 9+1 como pasa) pero no se como hacerlo.

    Gracias de antemano por leer esta parrafada y por sus respuestas.

  • #68068

    jaimepascual
    Participante

    Perdón, no ha salido casi código y lo poco que ha salido no esta completo.
    ¿Se puede subir código en este foro o es una opción no posible?

  • #68075

    LGrusin
    Miembro

    Si quieres utiliza http://pastebin.com/ para ver mejor el código.

    Un saludo

  • #68078

    jaimepascual
    Participante

    Aquí reproduzco el mensaje de nuevo con el texto incrustado a través de pastebin como me recomendó LGrusin (muchas gracias)

    Hola:
    Acabo de empezar con wordpress y php y ando un poco verde.
    Este es parte del código del archivo index del thema (creo que es el código que interesa…. aunque no estoy seguro).

    <iframe src=”http://pastebin.com/embed_iframe.php?i=qsUknJM7″ style=”border:none;width:100%”></iframe>

    Este tema muestra 10 post (imágenes destacadas de 10 posts). En la página 1 muestra 1 post en grande y 9 dispuestos en 3 filas, con 3 post cada una.

    http://imageshack.us/photo/my-images/13/pagina1g.jpg/

    El problema viene cuando tengo más de 10 post y en la página 2 también se muestran 10 (pero ninguno en grande), 3 filas con 3 post cada una y en la cuarta fila solo se muestra un post quedando, visualmente mal.

    http://imageshack.us/photo/my-images/843/pagina2d.jpg/

    Creo que en este trozo de código es donde tengo que definir que muestre solamente 9 (no 9+1 como pasa) pero no se como hacerlo.

    <iframe src=”http://pastebin.com/embed_iframe.php?i=pfwnQT1K” style=”border:none;width:100%”></iframe>

    Gracias de antemano por leer esta parrafada y por sus respuestas.

  • #68087

    LGrusin
    Miembro

    Si no me he equivocado lo que quieres sería: http://pastebin.com/7TjS3jXq

    Antes de hacer nada, copia el archivo original no sea que tengas que reponerlo si algo va mal.

    Otra cosa que debes comprobar es si funciona la paginación con esos cambios que he puesto.

    Un saludo

  • #68093

    jaimepascual
    Participante

    No no me refería a esto.

    Con este código lo que pasa es que se repite en cada una de las páginas que hay lo que sale en la primera: 1 post destacado más 9 post (http://imageshack.us/photo/my-images/13/pagina1g.jpg/). Simplemente (ya se que no es fácil, por lo menos para mi) que en las páginas que no sea la primera salgan 9 post, sin destacado http://img542.imageshack.us/img542/3056/pagina3d.jpg

    Dando vueltas con las opciones de wordpress ajustes>lectura>número máximo de entradas a mostrar, fijándolo en 9 he conseguido, consigo que se muestre como quiero, pero con un fallo también. Como el tema obliga a mostrar 1+9 en la página 1 y yo he fijado en 9 el máximo a mostrar, la imagen 10 la coloca el tema y es la misma que la imagen 1 de la página 2. El resto ya se ve bien.

    Es por esto que lo quería hacer con el “else” este http://pastebin.com/pfwnQT1K diciéndole que si hay post obtenga los post, pero solamente 9, no 1+9.

    Siento explicarme tan mal pero es que no se hacerlo mejor.

    Gracias por vuestra ayuda de todas maneras.

  • #68094

    LGrusin
    Miembro

    Ah, pensé que querías todas las páginas igual que la primera.

    A ver si nos aclaramos, la 1 página con 1 + 9 y las restantes con 9. Ten en cuenta que si son menos de 9 te pasará lo mismo, es decir, con 4, 5, 7 y 8 posts lógicamente no pueden salir 3 filas de 3 columnas.

    ¿Es eso?

    Pues sustituye donde pone:
    <?php else : ?>

    <?php if (have_posts()) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
    <?php include(“incl/post.php”); ?>

    <?php endwhile;?>
    <?php wp_reset_query(); ?>
    <?php endif; ?>

    <?php endif; ?>

    por:

    <?php else : ?>

    <?php if (have_posts()) : ?>
    <?php query_posts(‘posts_per_page=9’); ?>
    <?php while ( have_posts() ) : the_post(); ?>
    <?php include(“incl/post.php”); ?>

    <?php endwhile;?>
    <?php wp_reset_query(); ?>
    <?php endif; ?>

    <?php endif; ?>

    Deja las opciones de lectura como estaba a 10 post.

    Saludos

  • #68096

    jaimepascual
    Participante

    Bien, vamos avanzando. Ahora si que se muestran como quiero, 1+9 en la primera página y 9 en la segunda y sucesivas. Pero hay un problema. Le estamos diciendo que nos cargue lo que hay en “query_posts” y entonces me salen en las páginas 2 y 3 los mismos post que en la página 1, solo que en la primera se muestran 1+9 y en las sucesivas 9 (con las imágenes destacadas en pequeño como quiero).
    Ya he comentado que ando muy verde de php, pero creo que lo que tengo que hacer es limitar esta sentencia para que muestre 9. Algo así como: ,aunque ya te digo que esto no funciona.

  • #68097

    jaimepascual
    Participante

    Algo así como: http://pastebin.com/Li4sm3mq ,aunque ya te digo que esto no funciona.

  • #68099

    LGrusin
    Miembro

    El problema es que se hacen tres consultas a la vez y cada una interfiere con las otras. Prueba sustituir en el código que te he dado antes:
    <?php query_posts(′posts_per_page=9′); ?>
    por:
    <?php query_posts(′posts_per_page=9&paged=′ . $paged); ?>

    A ver si funciona la paginación y conserva el orden de los posts.

  • #68100

    jaimepascual
    Participante

    Paginación ok
    Los post bien (en número y distribución), pero se vuelve a repetir el último de la página 1 en la posición 1 de la página 2.
    Es que no entiendo que proceso lleva a repetir este post al principio de la segunda página?!?!?! Porque de la 2 a la 3 no se repite nada

  • #68103

    LGrusin
    Miembro

    Pues porque la última consulta parte del post 10 en vez del 11, eso no es correcto. El resto de páginas parten de lo indicado en la última consulta que es el nuevo código que se ha añadido.

    ¿Qué has puesto en ajustes > lectura > número máximo de entradas a mostrar?
    Debe estar a 10.

  • #68104

    jaimepascual
    Participante

    A 10 estaba. Lo he cambiado a 9 a ver que pasaba y sale igual. Lo vuelvo a dejar en 10.

  • #68107

    LGrusin
    Miembro

    Aunque tengo una ligera idea de lo que está ocurriendo, voy a intentar emular las consultas a ver si averiguo lo que pasa.

    Esas consultas se podían haber realizado de otra forma. ¿De dónde has sacado ese theme?

    Por cierto, si tienes algún plugin de caché desactivalo o desinstálalo, y elimina archivos temporales del navegador no sea que esté mostrando cosas que no son y nos confunda.

    Un saludo

  • #68109

    jaimepascual
    Participante

    Cache tuve pero lo desactive, desinstalé y borre todos los rastros dejados (según recomendaban en la página del plugin wp super cache).
    Archivos temporales borrados (chrome, firefox y opera) y sigue igual.
    El tema es Simply Delicious – Free version of Deliciously Simple with limited features de http://mmminimal.com/wordpress-theme/
    Visitando la página de mmminimal http://mmminimal.com/ puedes ver que pasa exactamente lo que te estoy contando, o sea, que el theme viene así “de fábrica”.

  • #68128

    LGrusin
    Miembro

    La verdad es que WordPress no suele equivocarse. Tiene su lógica lo que está haciendo. Cada vez que pasas de página realiza una consulta con lo que “machaca” la consulta previa. Esto no suele hacerse así.

    Con 10 artículos por página coincide puesto que en la primera página muestras 1+9, aunque después no te guste como se ve. Con 9 artículos por página es correcto lo que hace, puesto que avanzas un artículo con el offset. Esto hace que se vea repetido al principio de la segunda página.

    La solución pasaría porque muestres 9 posts y el de arriba perteneciera a otra categoría que quisieras destacar, es lo que hacen la mayoría de themes, aunque después vuelva a aparecer el artículo en el bucle.

    Después de todo este rollo, ¿Realmente cuál era la misión de ese post en la parte superior? Si es por estética puedes poner cualquier otra cosa.

    Saludos

  • #68129

    jaimepascual
    Participante

    Realmente la primera pregunta que lance ha sido contestada satisfactoriamente, que era que en páginas posteriores a la primera se vieran 9 post y no 10. Lo que pasa que se ha ido liando…. Quería saber el proceso que sigue wordpress para mostrar ese repetido. Sinceramente se me escapa, pero aunque parezca mentira, he aprendido cosas investigando sobre este theme.
    Además ahora se que cualquier duda que tenga en el futuro, me puede ser contestada en este foro y rápidamente que es lo mejor.
    Doy por finalizada la pregunta y satisfecho. Quizá en un futuro cuando sepa mas php me atreva a modificar el código para que se muestre 100% bien.
    Muchas gracias.

  • #68132

    LGrusin
    Miembro

    jaimepascual, es que la teoría es una cosa y la realización práctica es otra.

    El proceso es el que te he dicho pero si quieres amplío la información por si le pudiera interesar a alguien.

    Desde luego que se aprende batallando con estas cosas pero la idea que te doy es que puedes mostrar en la parte superior un post de una categoría, por ejemplo Noticias. El resto de posts pueden salir de 9 en 9, incluso excluyendo ese post que ha salido en la parte superior.

    Aunque no lo creas esto es más fácil de hacer que el lio que se ha formado el autor del theme.

    Por cierto, los comentarios no van bien, este theme en su versión free tiene algunas limitaciones tal como advierte el autor. En el archivo comments.php hay que modificar una línea.

    Un saludo

  • #68139

    jaimepascual
    Participante

    Soy consciente de que es una versión free. Pero es que si me voy a la premium me va a pasar lo mismo porque añade funcionalidades que no tienen que ver con los post.
    Voy a ver si me estudio el loop e intento hacer lo que dices, pero no te quejes si luego te lleno el foro de preguntas ;P.
    Que has detectado en el archivo comments? A mi los comentarios me parecen que van bien, no he detectado nada.

  • #68156

    LGrusin
    Miembro

    En la versión que me descargue v1.3 el archivo comments.com pone:
    wp_list_comments( array( ‘callback’ => ‘twentyten_comment’ ) );
    Puesto que la función twentyten_comment no existe, da error al mostrar los comentarios. Si no hay comentarios en un post no ves el error.

    Te comprendo, comprar el theme no te garantiza que tenga solucionados esos problemas…

    Todo lo contrario, el foro está más animado con estas discusiones. Incluso sería de agradecer más participación. En mi caso personal, a veces me cuesta más “descifrar” las preguntas que el propio código… 😉

    Un saludo

  • #68177

    LGrusin
    Miembro

    Bueno al final he conseguido hacer lo que querías. No me gustaba mucho eso de “jugar” con el offset pero he visto infinidad de códigos por ahí que lo hacen. Se trataba de sumar al offset la página y el número de posts por página.

    <?php $offset = ( $page – 1 ) * 9 + 1; ?>

    Después se sustituye la consulta por:
    query_posts(‘posts_per_page=9&paged=’.$paged.’&offset=’.$offset);

    Aquí tienes el código completo:
    http://pastebin.com/nPNyjNEp

    Un saludo

  • #68178

    jaimepascual
    Participante

    Supongo que tu ya lo habías probado, pero te confirmo que funciona perfecto.
    Muchas gracias. Has sido muy amable

  • #68299

    LGrusin
    Miembro

    De nada, faltarías más…

    Un saludo

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

Pin It on Pinterest