Avisos
Vaciar todo

[Resuelto] mostrar una entrada específica en el sidebar

4 Respuestas
3 Usuarios
0 Reactions
20 Visitas
Respuestas: 2
New Member
Topic starter
 

Buenas tardes.

Tenía resuelto el mostrar una entrada específica en el sidebar y en c¡ualquier entrada y página. Es decir, podía mostrar el contenido de una entrada con un id en cualquier parte de la web.

La solución que tenía es incluir en functions.php el siguiente texto.

 
function aw_include_post($atts) {
$thepostid = intval($atts[id]);
$output = '';
query_posts("p=$thepostid");
if (have_posts()) : while (have_posts()) : the_post();
$output .= get_the_content($post->ID);
endwhile; else:
// si falla no sale nada
endif;
wp_reset_query();
 
return $output;
}
 
add_shortcode("incluir_entrada", "aw_include_post");
 
 
Y añadía el siguiente código en el sidebar:
  [incluir_entrada id="15299"]
 
y me mostraba el contenido de mi entrada 15299.
 
Pero en Julio o agosto del 2024 me ha dejado de funcionar.
 
¿Me podrían ayudar a resolver este tema?
Gracias

Contenido solo visible a usuarios registrados


 
Respondido : 01/10/2024 2:04 pm
Tags del tema
Argenis
Respuestas: 11585
Illustrious Member Moderator
 

Hola Dolores,

Trata sustituyendo el código que nos compartes por este:

function aw_include_post($atts) {
// Aseguramos que 'id' esté presente y lo convertimos a entero
$thepostid = intval($atts['id']);
if ($thepostid <= 0) {
return ''; // Si no hay ID válido, devolvemos vacío
}

// Usamos WP_Query en lugar de query_posts
$query = new WP_Query(array(
'p' => $thepostid, // Consulta por ID del post
'post_status' => 'publish' // Asegura que sea un post publicado
));

$output = '';
if ($query->have_posts()) {
// Usamos buffering para capturar el contenido
ob_start();
while ($query->have_posts()) {
$query->the_post();
the_content(); // Imprime el contenido del post
}
$output = ob_get_clean(); // Capturamos el contenido impreso
}

// Restablecemos el query principal
wp_reset_postdata();

return $output; // Devolvemos el contenido capturado
}

// Agregamos el shortcode
add_shortcode("incluir_entrada", "aw_include_post");

Con el mismo shortcode que utilizas. Verifica y nos comentas.

Un saludo 


 
Respondido : 01/10/2024 3:34 pm
Respuestas: 2
New Member
Topic starter
 

Me funcionó.

Creo que me dejó de funcionar, por que habían cambiado el thema al Thema padre y no a un thema hijo donde cambiaba lel fichero functions.php.

Al final dejé el código que me enviaste y me funciona perfectamente.

Muchas gracias.

 


 
Respondido : 11/10/2024 7:55 am
Pepe
 Pepe
Respuestas: 41115
Illustrious Member Admin
 

Hola Dolores.

¡Genial! Me alegra mucho que lo hayas resuelto. 😊 

Si necesitas más ayuda, no dudes en contactarnos.

 

Un saludo


 
Respondido : 11/10/2024 8:09 am