La siguiente es mi consulta de wordpress en la que quiero mostrar solo publicaciones fijas, pero la consulta no muestra ninguna publicación. ¡También configuré dos publicaciones como pegajosas para que se verifique esa parte! Por favor, hágame saber cómo modificar esta consulta para que solo muestre las publicaciones que son pegajosas.
<?php
$wp_query = null;
$wp_query = new WP_Query(array(
'posts_per_page' => 2,
//'paged' => get_query_var('paged'),
'post_type' => 'post',
'post__in' => 'sticky_posts',
//'post__not_in' => array($lastpost),
'post_status' => 'publish',
'caller_get_posts'=> 0 ));
while ($wp_query->have_posts()) : $wp_query->the_post(); $lastpost[] = get_the_ID();
?>
Consulta que mostrará solo publicaciones fijas:
// get sticky posts from DB
$sticky = get_option('sticky_posts');
// check if there are any
if (!empty($sticky)) {
// optional: sort the newest IDs first
rsort($sticky);
// override the query
$args = array(
'post__in' => $sticky
);
query_posts($args);
// the loop
while (have_posts()) {
the_post();
// your code
}
}
-
Oye, me enfrento a un último problema que cuando no hay publicaciones adhesivas, recibo una advertencia: – / ¿Por favor, hágame saber cómo solucionar esa parte también?
– usuario2304394
6 de noviembre de 2013 a las 14:19
-
No debería recibir ninguna advertencia si utiliza
!empty
como mostré. Pero puedes intentar extender estoif
para comprobar también siis_array($sticky)
– sebápalo
6 de noviembre de 2013 a las 14:21
-
Sé que esto es antiguo, pero para cualquiera que lo encuentre, no use query_posts. Nunca fue diseñado para usarse en complementos o temas. Ver documentos de WordPress
– wickywills
8 de julio de 2021 a las 14:43
La función query_posts() crea un nuevo WP_Query() no antes de que se configure la consulta actual, lo que significa que este no es el método más eficiente y realizar solicitudes SQL adicionales.
Use el gancho ‘pre_get_posts’ para estar seguro, como
function sticky_home( $query ) {
$sticky = get_option('sticky_posts');
if (! empty($sticky)) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'post__in', $sticky );
}
}
} add_action( 'pre_get_posts', 'sticky_home' );