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' );
7
12
Brutal, muchas gracias.
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
Buenas Mauro! Muchísimas gracias!
En breve vamos a sacar más funciones como ésta, abriremos una sección de ideas de nichos y también publicaremos algunos plugins gratuitos sencillitos
Abrazo!
tssss muy bueno, luego te haces uno de como colocar estrellas para calificar los post por parte de usuarios?
Buenas Moe!
Claro, muy buena idea, me lo apunto y lo hago mañana. Un abrazo!
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.
¡Muy bueno!
Es una buena base para empezar a “jugar” con el código.
Gracias, Fede.
Muchas gracias Germán!
Hoy publicaré varios snippets nuevos que tengo por ahí guardados 😉
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.
Buenas Ale! En breve habrá novedades de eso como le comentaba a @carlosjulian, estamos trabajando en bloques muy interesantes
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.
Buenas compi! Cómo estás?
Justamente estamos trabajando ahora mismo para agregar nuevos bloques Gutenberg, no solo los que comentas de notas,alertas, etcétera, sino tambiémn de maquetación, FAQ con Schema y un montón de cosas muy interesantes que estarán disponibles en breve