Themes y Diseño

Foro WordPress » WordPress » Themes y Diseño

Mostrar post_types mismo tag (20 mensajes)

Acerca de este hilo

Tags

Etiquetas:

  1. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 7 meses
    #

    Hola, esta vez estoy haciendo que debajo de cada artículo salga un apartado que ponga "Juegos relacionados" (otro post type, que tenga por lo menos un tag que coincida con la noticia). Sin saber PHP, iba haciendo lo que podía y al final sólo pasaron dos cosas que no pude solucionar:

    1. Si no encontraba juegos mismo tag, no conseguí que mostrara un mensaje "No hay juegos relacionados".

    2. Si los encontraba, todo el código que hay debajo de ese apartado desaparecía, los comentarios, etc.

    He descubierto que sólo muestra los que tienen un único tag.

    Podéis ver 2 ejemplos aquí, este no se muestra, y aquí sí.

    Este es el código que puse:

    < div class="postmeta-terciary" >
     
    < h3 >Juegos relacionados con la noticia:< /h3 >

    < ?php
    //for use in the loop, list 5 post titles related to first tag on current post
    $tags = wp_get_post_tags($post- >ID);
    if ($tags) {
    $first_tag = $tags[0]- >term_id;
    $args=array(
    'tag__in' = > array($first_tag),
    'post_type' = > juegos,
    'post__not_in' = > array($post- >ID),
    'showposts'= >5,
    'caller_get_posts'= >1
    );
    $my_query = new WP_Query($args);
    if( $my_query- >have_posts() ) {
    while ($my_query- >have_posts()) : $my_query- >the_post(); ? >

    < ?php
    $juego = get_post_meta($post- >ID, "Carátula del juego", true);
    $altura = get_post_meta($post- >ID, "Tipo de carátula", true);
    $extracto = get_post_meta($post- >ID, "Descripción", true);
    ? >

    < div class="juego-item" >< div class="thumbd" ><a>" title="< ?php the_title(); ? >" alt="< ?php the_title(); ? >" ><img />" align="left" class="< ?php echo($altura) ? >" title="< ?php the_title(); ? >" alt="< ?php the_title(); ? >" ></a>< /div >

    < h2 class="entry-title" ><a>" title="< ?php the_title(); ? >" rel="bookmark" >< ?php the_title(); ? ></a>< /h2 >
    < div class="
    entry-content" >
    < ?php echo($extracto); ? >
    < /div >
    < /div >
    < ?php
    endwhile;
    }
    }

    ? >

    < /div >

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  2. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 7 meses
    #

    Por lo que he entendido en tu caso, quieres crear un Custom Post Type con Custom Fiels. Dicho en cristiano, quieres crear un Tipo de post personalizado que contiene campos personalizados.

    Pon el código entre comillas invertidas, (la que está a la derecha de la letra P). Tal como lo pones no se ve bien. De todas formas puedes poner que después del "if ($my_query- >have_posts()) {" un else que indique que no hay post encontrados para que muestre el mensaje. En ese caso el if $tags lo podrías quitar.

    Un saludo

  3. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 7 meses
    #

    Los Custom Post Type ya los tengo hechos, pero no se porque no funciona con más d eun tag. ¿Me podrías poner el código con lo else puesto? Es que yo no se de PHP.

    Muchas gracia spor tu yauda, +1.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  4. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 7 meses
    #

    A ver, es correcto lo que hace.

    1 - Muestra artículos si encuentra sólo un tag. Fijate que te lo pone el comentario del código. "for use in the loop, list 5 post titles related to first tag on current post" (Lista los títulos de 5 posts relacionados con el primer tag")

    2 - La consulta de las tags debe ser otra puesto que se ejecuta también en el array como parámetro el Custom Post Type "Juegos". Aunque no encuentre tags si encuentra "Juegos". Esto no debería ocurrir.

    3 - El <h3>Juegos relacionados con la noticia:</h3> Debería estar dentro del if y no fuera. De esa forma no se muestra si no encuentra posts de esa tag.

    Todo esto debería estar en el single.php y no tienes por qué retocar nada más en el archivo. Asi evitas que desaparezcan los comentarios y demás.

    Tengo un código para hacerlo con categorías pero con tags no sé si funcionará, tengo que probar.

    Deja ver si a alguien o a mi nos viene la inspiración y te decimos.

    Un saludo

  5. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 7 meses
    #

    Gracias por ayudarme, esperaré. Yo quiero que <h3>Juegos relacionados con la noticia:</h3> se muestre siempre, pero debajo ha de mostrar el juego o "No hay juegos relacionados".

    Gracias.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  6. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 7 meses
    #

    Vamos a intentar varias cosas para no cambiar mucho el código que has puesto. Lo del mensaje, sería algo como

    else { echo "No hay juegos relacionados"; }

    va justo antes del último ?>

    Antes de $my_query = new WP_Query($args); añade lo siguiente
    $temp_query = clone $wp_query;

    y después de endwhile;} añade
    $wp_query = clone $temp_query;

    A ver que cambios notas, por de pronto el mensaje tiene que salir si no hay tags.

    Un saludo

    Un saludo

  7. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 7 meses
    #

    Hola, gracias por responderme.

    De momento ese código he comprobado que se muestra si en una noticia no hay tags, y de moemnto me ayuda. Pero también quiero que se muestre si no encuentra posts con el post_type: juegos, que contenga el mismo tag.

    Luego falta el problema ese que no muestra posts cuando hay más de un tag, y cuando solo hay uno, muestra el post, anulando el código de debajo.

    Gracias, +1.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  8. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    Sigue sin funcionar, gracias.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  9. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    No se nin´gun código :(. Lo he borrado temporalmente.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  10. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 6 meses
    #

    Esta parte no la entiendo.

    ...Pero también quiero que se muestre si no encuentra posts con el post_type: juegos, que contenga el mismo tag...

    Estas son las combinaciones:
    1 - post type juegos y tags
    2 - post type juegos sin tags
    3 - sin post type juegos y con tags
    4 - sin post type juegos y sin tags

    Como puedes ver hay varias combinaciones, ¿Realmente qué quieres que se muestre exactamente? ¿Qué debe mostrase cuando no se cumplen las condiciones?

    Un saludo

  11. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    Quiero que muestre de 1 a 5 posts del post_type "juegos" en una noticia normal, que contengan el post de juegos y el de la noticia cómo mínimo 1 tag que coincida. Si no hay ningún tag que coincida entre estos dos posts (juegos y post), que muestre el mensaje "No hay juegos relacionados". Que muestre los posts con este estilo:

    < ?php
    $juego = get_post_meta($post- >ID, "Carátula del juego", true);
    $altura = get_post_meta($post- >ID, "Tipo de carátula", true);
    $extracto = get_post_meta($post- >ID, "Descripción", true);
    ? >

    < div class="juego-item" >< div class="thumbd" ><a>" title="< ?php the_title(); ? >" alt="< ?php the_title(); ? >" ><img />" align="left" class="< ?php echo($altura) ? >" title="< ?php the_title(); ? >" alt="< ?php the_title(); ? >" ></a>< /div >

        < h2 class="entry-title" ><a>" title="< ?php the_title(); ? >" rel="bookmark" >< ?php the_title(); ? ></a>< /h2 >
        < div class="
    entry-content" >
            < ?php echo($extracto); ? >
        < /div >
    < /div >

    Muchas gracias.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  12. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 6 meses
    #

    Bueno se me ocurre otra cosa. Puedes personalizar lo que sale en el custom post type simplemente poniendo ese código en un archivo llamado single-post-type.php, en tu caso sería single-juegos.php

    Ahí pones ese código que te interesa. Ni siquiera te hace falta pasar a la consulta el post type juegos, ya WordPress te lo muestra, sólo haces la consulta para mostrar los posts relacionados con las tags.

    Es decir, el código:

    $tags = wp_get_post_tags($post->ID);
    if ($tags) {
    $first_tag = $tags[0]->term_id;
    $args=array(
    'tag__in' => array($first_tag),
    'post_type' => juegos,
    'post__not_in' => array($post->ID),
    'showposts'=>5,
    'caller_get_posts'=>1
    );

    pasaría a ser:

    $tags = wp_get_post_tags($post->ID);
    if ($tags) {
     foreach($tags as $tag) {
        $mis_tags .= $tag->name . ',';
     }
     $args=array( 'tag' => $mis_tags, 'showposts'=>5 );
    
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post();
    
    etc, etc, etc....
    
    } else { echo 'No hay juegos relacionados'; }

    Este código muestra 5 artículos relacionados con todas las tags del juego. Si existen post type juegos pero no existen tags se muestra el post y un mensaje de "No hay juegos relacionados". Es decir, siempre se mostrará un post de juegos tenga o no tenga tag.

    Espero haberme explicado bien y no haberme equivocado al copiar el código...

    Un saludo

  13. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    Hola, ese código se va acercando a lo que quiero gracias. Creo que lo único que no has entendido es que quiero que en en el post_type "posts" (el normal), quiero que muestre posts de juegos.

    No me refiero a que dentro de un post juegos muestre "juegos". Quiero que muestre posts juegos dentro de un post normal.

    Un saludo.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  14. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 6 meses
    #

    Me volví a perder...

    ¿Te refieres al index? Pensé que eso lo tenías solucionado. Lo que yo te comento es para el single de los post, que es donde se suponía que tenías el problema.

    Por lo que dices lo quieres todo mezclado, entonces ¿Qué objeto tiene el post type juegos? Se podría haber hecho lo mismo con categorías y/o tags.

    Saludos

  15. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    Haber, mira, te explico lo que quiero conseguir. En mi web de videojuegos, naturalmente escribo noticias de videojeugos. Hace poco creé un Custom Type con fichas de videojuegos ( En el post-juegos, sale el precio, caratula, etc.

    Pues bien, quiero que en una noticia normal, imaginate que trata de un nuevo personaje revelado para Mario Kart 7, pues quiero que debajo del post ponga "Juegos relacionados", y salga un enlace y extracto y thumbnail del juego del que se habla en la noticia (en este caso, Mario Kart 7).

    He pensado que al post de Mario Kart 7 le pongo el tag "mario kart 7", y así en todas las noticias normales que tengan ese tag muestre un enlace al post type.

    Espero que lo hayas entendido ahora. Saludos

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  16. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    Sigo interesado en este asunto. Gracias.

    PD: Si quieres, te puedo enseñar algunas páginas de muestra que realizan esta función.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  17. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 6 meses
    #

    Lo siento javier pero al final no he entendido lo que quieres hacer. La edad no perdona...

    Los Posts types son tratados aparte de los posts normales, o creas tags independientes para los posts y los posts types o habrá que inventar algo para que consulte en los post y después en los posts types. No sé si van por ahí los tiros...

    Lo que habría que ver también el código que has usado para crear el Post type, si has permitido etiquetas o no.

    Un saludo

  18. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 6 meses
    #

    Si quieres, te creo un perfil como admin y puedes entrar a ver el código.

    Esta página (DSWii), está hecha con Wordpress, y hace la función que yo busco:

    La noticia explica una noticia sobre Zelda Skyward Sword, y, debajo muestra el post_type "juegos" relacionado. Gracias

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  19. javierm5

    3.0
    Antiguedad: Ago 2011
    Mensajes: 37

    offline

    Publicado hace 5 meses
    #

    Por fin, después de un largo tiempo, he encontrado el código que hace la función.

    Gracias a todos.

    ¡Entra en http://www.actualidadconsolas.com y descubre un nuevo mundo de los videojuegos!
  20. LGrusin

    Moderador
    Antiguedad: Feb 2011
    Mensajes: 1.801

    offline

    Publicado hace 5 meses
    #

    ¡Estupendo...!

    ¿Y se puede saber cuál es ese código?

    Un saludo

Responder

Debes Identificarte para publicar.

Foro WordPress » WordPress » Themes y Diseño