Necesito código que muestre post relacionados sin plugin

Inicio Foros WordPress Plugins Necesito código que muestre post relacionados sin plugin

Este debate contiene 40 respuestas, tiene 5 mensajes y lo actualizó  malder hace 6 años, 6 meses.

  • Autor
    Publicaciones
  • #23620

    imported_seravifer
    Participante

    <p>Esa es la idea que necesito. Necesito un código que muestre cinco post relacionados en cada post con imagen. Se que se puede mediante tags o categorías, yo utilizo categorías y el estilo como el de linkwithin.</p>
    <p>Mi web http://www.familiapixel.com/
    </p>

  • #58726

    almendron
    Participante

    Show Related Post in WordPress Without a Plugin

    <?php
    $categories = get_the_category($post->ID);
    if ($categories) {
    $category_ids = array();
    foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
    $args=array(
    'category__in' => $category_ids,
    'post__not_in' => array($post->ID),
    'showposts'=>5, // Number of related posts that will be shown.
    'caller_get_posts'=>1
    );
    $my_query = new wp_query($args);
    if( $my_query->have_posts() ) {
    echo '<h3>Related Posts</h3><ul>';
    while ($my_query->have_posts()) {
    $my_query->the_post();
    ?>
    <li><?php the_post_thumbnail(); ?><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
    <?php
    }
    echo '</ul>';
    }
    }
    ?>

    En relación a <?php the_post_thumbnail(); ?> echa un vistazo a

    http://codex.wordpress.org/Function_Reference/the_post_thumbnail

  • #58730

    almendron
    Participante

    Me olvidaba: este código va en el archivo single.php.

  • #58731

    imported_seravifer
    Participante

    Gracias, se que iba en ese archivo

  • #58732

    imported_seravifer
    Participante

    No funciona bien(elimina los comentarios)

  • #58734

    almendron
    Participante

    ¿Elimina los comentarios? ¿No habrás borrado <?php comments_template(); ?>? Yo lo uso aunque con tags y funciona perfectamente. Lo puedes ver, por ejemplo, en

    http://www.almendron.com/tribuna/39486/el-orden-espontaneo/

    La única diferencia es que yo lo tengo puesto en comments.php porque la lista de post relacionados está integrada con los comentarios.

  • #58735

    imported_seravifer
    Participante

    Espera y ye muestro lo que pasa

  • #58736

    imported_seravifer
    Participante
  • #58737

    imported_seravifer
    Participante

    Mi codigo:
    <?php get_header(); ?>
    <div id=”content”>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php the_title(‘<h4>’, ‘</h4>’); ?>
    <div class=”postmeta”>Publicado por
    <?php the_author_posts_link(); ?>
    el <?php the_time(‘d M, Y’) ?>
    <div class=”addthis_toolbox addthis_default_style” style=”margin-top:8px;”>


    </div>
    <script type=”text/javascript” src=”http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4e67489c228c415c”></script>
    </div>
    <div class=”entry”>
    <?php the_content(); ?>
    <div class=”clear”></div>
    </div>
    [El codigo]
    <?php comments_template(); ?>
    <?php endwhile; else: ?>

    <?php endif; ?>
    </div>
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

  • #58738

    almendron
    Participante

    Ya lo veo. Tiene que ser debido a la colocación del código en el single.php o también a que haya una consulta con el mismo nombre ($my_query).

    Pon el código del single.php pero usa para ello http://tinypaste.com/

  • #58739

    imported_seravifer
    Participante
  • #58743

    LGrusin
    Miembro

    Un detalle por si puede ayudar. El código lo estás poniendo dentro del bucle while principal. Puede que pierda la anterior consulta sobre los comentarios del post.

    Una idea puede ser sacarlo fuera del while ejecutándolo al principio del single por ejemplo. Si también afecta a la consulta entonces tendrás que guardar la consulta previa antes de ejecutar una nueva.

    Además al hacerlo fuera, el resultado lo puedes guardar en una variable y después el contenido lo puedes ubicar donde quieras, dentro del bucle, fuera, antes de los comentarios, después, etc.

    Un saludo

  • #58744

    almendron
    Participante

    Prueba a poner fuera del while (justo después de <?php get_header(); ?>) lo siguiente:

    <?php
    $categories = get_the_category($post->ID);
    if ($categories) {
    $category_ids = array();
    foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
    $args=array(
    'category__in' => $category_ids,
    'post__not_in' => array($post->ID),
    'showposts'=>5, // Number of related posts that will be shown.
    'caller_get_posts'=>1
    );
    $rp_query = new wp_query($args);
    }
    ?>

    Fíjate que ahora la consulta la hemos llamado “$rp_query”.

    Y después, donde lo habías puesto antes:

    <?php
    if( $rp_query->have_posts() ) {
    echo '<h3>Related Posts</h3><ul>';
    while ($rp_query->have_posts()) {
    $rp_query->the_post();
    ?>
    <li><?php the_post_thumbnail(); ?><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
    <?php
    }
    echo '</ul>';
    }
    ?>

  • #58749

    imported_seravifer
    Participante

    Sigue sin funcionar
    http://tinypaste.com/347e371b

  • #58754

    imported_seravifer
    Participante

    Al ponerlo hace que muestre los comentarios de otro post.

  • #58751

    almendron
    Participante

    ¡Joder, qué raro! Hazme un favor: pon el código de comments.php a ver si descubrimos por qué interfiere con los comentarios.

    Y otra cosa: no dispondré de un servidor local donde hacer pruebas hasta la semana que viene. Si no conseguimos que funcione, lo miraría a partir del día 9.

  • #58752

    imported_seravifer
    Participante

    http://tinypaste.com/f45dd884

    Gracias por tu ayuda!!!

  • #58755

    imported_seravifer
    Participante

    Por cierto yo te podría dejar uno…

  • #58756

    almendron
    Participante

    Me explico mejor: estoy de viaje y en el portátil no tengo instaladas las herramientas necesarias para hacer pruebas.

    Y no veo nada raro en el comments. Si te parece, y por no ir dando palos de ciegos, esperamos a la semana que viene. Descargaré el tema que usas y lo probaré en local.

    Con un poco de suerte, a lo mejor entre tanto se pasa alguien y nos ilumina 🙂

    Nota: dime donde puedo descargar la misma versión del tema que usas.

  • #58757

    imported_seravifer
    Participante

    ES propio versionado de otro tema: “channel”

    http://www.theme-junkie.com/2009/09/16/free-wordpress-theme-channel/

  • #58762

    almendron
    Participante

    Ya lo he descargado. De momento, podrías probar en local con el tema original a ver si el problema desaparece o se mantiene. También podrías probar con otro tema cualquiera. Tal vez los resultados nos den alguna pista.

    Y lo dicho: la semana que viene lo probaré el local.

  • #58764

    LGrusin
    Miembro

    Señores intenten lo siguiente:

    Si quieren les adapto el código al ejemplo que han puesto en caso de que no lo entiendan.

    Un saludo

  • #58772

    imported_seravifer
    Participante

    Seria un placer que hicieras eso.

  • #58785

    LGrusin
    Miembro

    Así sería con el nuevo código:
    <?php
    $categories = get_the_category($post->ID);
    if ($categories) {
    $category_ids = array();
    foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
    $args=array( 'category__in' => $category_ids,
    'post__not_in' => array($post->ID),
    'showposts'=>5, // Posts a mostrar
    'caller_get_posts'=>1
    );

    $original_query = $wp_query;
    $wp_query = null;
    $wp_query = new WP_Query( $args );

    if ( have_posts() ) : ?>
    <h3>Posts Relacionados</h3><ul>
    <?php while ( have_posts() ) : the_post(); ?>
    <li><?php the_post_thumbnail( 'thumbnail' ); ?><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
    <?php
    endwhile;
    echo '</ul>';
    endif;

    $wp_query = null;
    $wp_query = $original_query;
    wp_reset_postdata();
    }
    ?>

    http://tinypaste.com/30defcdf

    Detalles a tener en cuenta.
    1 – El código puede ir justo antes de comments_template();
    2 – El código lo he “traducido” a la nueva versión pero no he comprobado si funciona, ni la anterior ni la nueva.
    3 – El código muestra los thumbnails en forma de lista vertical sin estilos. Habrá que darle estilos para adaptarlo el theme.
    4 – También hay que tener en cuenta el tamaño de los thumbnails para que quepan en el espacio disponible.
    5 – El parámetro ‘caller_get_posts’=>1 está obsoleto se usa en su lugar ‘ignore_sticky_posts’ => 1
    Se usa para que no salgan los sticky posts en la lista, se puede eliminar.
    6 – Usando las funciones get_permalink, get_the_title, get_the_post_thumbnail, etc, se podría pasar el resultado a una variable. De esta forma se puede colocar en cualquier parte que se desee del single.
    Ahí tienen trabajo para rato.
    Un saludo

  • #58798

    imported_seravifer
    Participante

    Tiene un fallo: (Parse error: syntax error, unexpected T_ENDWHILE in /homepages/4/d373400434/htdocs/fp/wp-content/themes/fp/single.php on line 49)

    Esta en esta linea

    Muchas gracias por la ayuda

  • #58806

    LGrusin
    Miembro

    Perdón, me faltó un } al final. Sería:

    Un saludo

  • #58822

    imported_seravifer
    Participante

    Muchas gracias, funciona 100%

  • #58837

    LGrusin
    Miembro

    Las gracias tienes que darselas a almendron que puso el código original.

    Un saludo

  • #59019

    almendron
    Participante

    Por lo que veo, ya has solucionado tu problema. Y LGrusin: gracias por afinar el código.

  • #62602

    malder
    Participante

    Hola!
    Disculpadme por meterme en el topic, pero es justamente lo que quiero, poner posts relacionados con imagenes y sin plugin.

    estoy usando el código que ha mejorado LGrusin pero me tira un error:
    Fatal error: Call to undefined function the_post_thumbnail() in
    Supongo que tengo que definir en el archivo functions.php the_post_thumbnail pero entro en el repositorio de wordpress y por mis nefastos conocimientos de php no me entero de nada, podrían guiarme?

    Gracias

  • #62613

    LGrusin
    Miembro

    La función the_post_thumbnail se añadió en la versión 2.9

    ¿Qué versión de WordPress estás usando?

    Un saludo

  • #62620

    malder
    Participante

    Tengo la última en estos momentos es: 3.3.2

    Gracias.

  • #62639

    LGrusin
    Miembro

    El código es para los themes que soporten los Post Thumbnails. Si el tuyo no usa Post Thumbnails el código no te sirve.

    Un saludo

  • #62643

    malder
    Participante

    Ok el theme lo estoy creando yo desde cero, lo que hice fue adaptarlo insertando en functions.php

    add_theme_support( ‘post-thumbnails’ );

    Con eso ya lo soporta, aparecen las entradas relacionadas pero lo que no me aparecen son las imagenes de vista previa, y en el codigo fuente tampoco se ve que las busque, porque solo hay elementos li te los titulos de los articulos,
    Tal vez estoy usando el código mal? como puedo hacer que aparezca de forma automatica una imagen de vista previa del post?

  • #62650

    LGrusin
    Miembro

    Yo creo que lo mejor es que instales cualquiera de los themes que vienen con WordPress y hagas las pruebas allí. Una vez comprobado que funciona mira el código sobre los Posts Thumbnails para que hagas lo mismo en tu theme.

    Un saludo

  • #62692

    djt
    Participante

    Soluciona el problema de los comentarios

    ID);

    $tagIDs = array();
    if ($tags) {
    $tagcount = count($tags);
    for ($i = 0; $i term_id;

    }
    $args=array(
    ‘tag__in’ => $tagIDs,
    ‘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(); ?>
    <a href="” rel=”bookmark” title=””>

    No related posts found!

    Si tienes problemas con los thumbnail prueba con esto

    get_the_ID(),
    ‘post_type’ => ‘attachment’,
    ‘numberposts’ => 1,
    ‘post_mime_type’ => ‘image’
    )));
    {
    foreach( $images as $image ) {
    if($tamano == ‘mini’) {
    $imagen = wp_get_attachment_image( $image->ID, ‘thumbnail’ );
    } if($tamano == ‘medio’) {
    $imagen = wp_get_attachment_image( $image->ID, ‘medium’ );
    } if($tamano == ‘grande’) {
    $imagen = wp_get_attachment_image( $image->ID, ‘full’ );
    }
    echo $imagen;
    }
    }
    }
    ?>

    Despues solo tienes que llamarla por ejemplo así

    <a href="” rel=”bookmark” title=”Permanent Link to “>

    Para acomodar las entradas relacionadas tienes que jugar un poco con CSS
    Fuente:
    http://www.nisfe.com/wordpress/articulos-post-y-entradas-relacionadas-sin-plugins-wordpress/
    http://www.forosdelweb.com/f118/tutorial-como-extraer-miniaturas-imagenes-wordpress-653664/

  • #62693

    djt
    Participante

    se me olvido colocar code y meti los php :), pero puedes verla en las fuentes.

  • #62714

    malder
    Participante

    LGrusin supongo que algo tengo que estar haciendo mal, pues he insertado el código en el theme twentyeleven y me sigue saliendo sin imagenes 🙁 lo que hago es pegar el código que tu mismo pusistes (http://tinypaste.com/30defcdf con el cierre que le falta) en single.php con los comentarios yo no tengo ningun problema porque uso disqus asi que quito directamente la llamada a comments

  • #62715

    malder
    Participante

    djt gracias por tu ayuda, voy a revisar las fuentes lo que pasa es que ese código solo tiene en cuenta las tags para mostrar los posts relacionados, lo suyo es tener en cuenta ademas las categorias para que los articulos tengan más relación.

    Por otra parte es ya cabezonería, el averiguar porque le funciona ese codigo a la gente y a mi no 😛
    el code de las imagenes me va a venir bien, voy a hacer pruebas a ver que tal

  • #62723

    LGrusin
    Miembro

    Posiblemente tenga que ver con la forma de “llamar” WordPress a los thumbnails. Antes de la aparición del llamado soporte para thumbnails estos eran la imagen en miniatura de un post, después se convirtieron en imagen destacada que es la que debes poner en el post si activas el famoso add_theme_support( ‘post-thumbnails’ );

    Dicho de otra manera si no pones la imagen destacada en el post no saldrá nada cuando llames a la función the_post_thumbnail.

    Otra cosa es si te da error…

    Un saludo

  • #62732

    malder
    Participante

    Pues entonces es eso, este cambio lo voy a aplicar a un blog ya hecho, con sus entradas (7 años) y no usa imagenes destacadas con lo que no voy a ponerme una a una, busco codigos automáticos y el ultimo que puso djt sobre las miniaturas funciona perfectamente, asi que es el que usaré, la función the_post_thumbnail parecía más simple pero si no se puede pues nada.

    Ahora tengo que ver el tamaño de las miniaturas, para eso según he leido en otros tutoriales, se suele usar timthumb, ¿Que os parece?

El foro ‘Plugins’ está cerrado y no se permiten nuevos debates ni respuestas.

Pin It on Pinterest