Federico·hace 8 meses· 12 respuestas

Shortcode para mostrar posts relacionados en WordPress

¡Muy buenas!

En este tutorial les comparto un código PHP personalizado para crear un shortcode de entradas relacionadas en WordPress.

Muchos themes de calidad, como Asap Theme, ya incluyen esto, pero si el tuyo no lo tiene y quieres ahorrarte un plugin, o simplemente jugar un poco con la función para adaptarla a algo más personalizado, este código te puede servir.

¿Cómo se usa?

Simplemente pegan ese archivo en functions.php y luego, cuando lo quieran utilizar, colocan el shortcode:

[posts_relacionados]

¡Un abrazo!

// Función para mostrar posts relacionados basados en las categorías
function nicheros_mostrar_posts_relacionados( $numero = 4 ) {
global $post;
if ( ! isset( $post ) ) {
return;
}

$post_id = $post->ID;
$categories = get_the_category( $post_id );

if ( $categories ) {
$category_ids = array();
foreach ( $categories as $category ) {
$category_ids[] = $category->term_id;
}

$args = array(
'category__in' => $category_ids,
'post__not_in' => array( $post_id ),
'posts_per_page' => $numero,
'ignore_sticky_posts' => 1,
);

$related_posts = new WP_Query( $args );

if ( $related_posts->have_posts() ) {
echo '<div class="posts-relacionados">';
echo '<h3>Artículos relacionados</h3>';
echo '<ul>';
while ( $related_posts->have_posts() ) {
$related_posts->the_post();
echo '<li><a href="' . esc_url( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a></li>';
}
echo '</ul>';
echo '</div>';
wp_reset_postdata();
}
}
}

// Registrar un shortcode para poder insertar los posts relacionados en cualquier parte del contenido
function nicheros_posts_relacionados( $atts ) {
ob_start();

$atts = shortcode_atts( array(
'numero' => 4, // Número de posts relacionados a mostrar (por defecto 4)
), $atts, 'posts_relacionados' );

nicheros_mostrar_posts_relacionados( intval( $atts['numero'] ) );

return ob_get_clean();
}
add_shortcode( 'posts_relacionados', 'nicheros_posts_relacionados' );

Fundador de Asap Theme, Content Curator, Enlazatom, NichoAI, Niche Creator, Club Nichero y Nicheros.club.

7
12
12 Respuestas
Más recientes
Más antiguos Más votado
Inline Feedbacks
View all comments
seofune

Brutal, muchas gracias.

Mauro

Fede genial gracias muy útil,,,, y que bueno que tienes una mentalidad como la de Dean Romero que apesar de tener herramientas de pago, regalan no sólo información súper útil sino herramientas que nos hacen más fácil las cosas

soy_moe

tssss muy bueno, luego te haces uno de como colocar estrellas para calificar los post por parte de usuarios?

FernandoC

Eres un crack por compartir este código, a veces me olvido de que hay formas de hacer las cosas sin tener que instalar un plugin. Siempre estoy buscando maneras de minimizar la cantidad de plugins que uso para ayudar a mantener mi sitio ligero y rápido.

Aunque me preguntaba, ¿este código afecta de alguna manera el rendimiento de mi sitio? ¿O es más o menos lo mismo que usar un plugin? Y una pregunta más para agregar, ¿hay alguna forma de ajustar este código para que muestre entradas relacionadas basadas en etiquetas en lugar de categorías?

Gracias por adelantado y un saludo.

Germán Well | SEO🚀

¡Muy bueno!

Es una buena base para empezar a “jugar” con el código.

Gracias, Fede.

Alejandro

Que buen aporte Fede pero viendo la respuesta de carlosjulian pienso que tiene mucha razon, hace falta algo en Asap para hacer más atractivos los articulos y poner notas, consejos, recomendaciones advertencias y hacer la lectura más amena.
Kadence tiene cosas muy buenas como esa.

carlosjulian

Gracias Fede, a mi me gusta que lo tenga Asap, de hecho trabajo más Asap con diseño propio con el child, y la verdad muchas funcionalidades me gustan porque son versátiles.Lo que si me gustaría que tuviera, porque yo lo hago manual, es crear short-codes, pero para diseño de ciertos bloques, por ejemplo de alertas, notas, avisos, pero que no solo lleven el background, con el borde, sino que tenga opción de colocar una campana, un signo de admiración, etc. Yo lo tengo a pelo, pero me gustaría que fuera más flexible.