Excluir publicaciones de get_posts()

3 minutos de lectura

Buenos días, encontré muchas preguntas similares, pero ninguna de la respuesta se ajustaba a mi problema. El punto es muy simple: tengo un ciclo personalizado con get_posts(), y quiero excluir la publicación actual para que no se muestre.

El código es:

$args = array(
          'posts_per_page'    => 3,
          'orderby'           => 'meta_value',
          'order'             => 'ASC',
          'post_type'         => 'fasthomepress_pt',
          'post__not_in'      => array(get_the_id()),
          'meta_query'        => array(
                                    array(
                                        'key' => 'custom_richiesta',
                                        'value' => array($custom_boxes['custom_richiesta'][0] - 10000, $custom_boxes['custom_richiesta'][0] + 10000 ),
                                        'type' => 'numeric',
                                        'compare' => 'BETWEEN'
                                      )
                              )
      );

Probé con:

'post__not_in' => array(get_the_ID),
'post__not_in' => array($post->ID),
'exclude'      => $post->ID,
'exclude'      => get_the_ID,

y con muchas otras combinaciones con o sin matriz. Por supuesto, la identificación de la publicación actual se repite correctamente antes de este bucle, y si pruebo echo ($ post-> ID) y echo (get_the_ID ()) tengo el mismo resultado correcto.

la verdad no se que pasa, muchas gracias por la ayuda,

marco

  • Intente eliminar su meta_query ahora para probar y verifique si excluye la publicación actual. La sintaxis es correcta, puede ser el problema con la meta consulta, creo que sí.

    – usuario46487

    20 de febrero de 2015 a las 10:42

  • Ya lo resolví, fue mi error!! Probé este bucle get_posts() dentro de otro bucle y no lo coloqué bien. Moví este ciclo fuera del ciclo principal y todo funcionó bien, ¡gracias por su apoyo!

    – marco

    20 de febrero de 2015 a las 10:52

  • Hola @Marco, si mi respuesta es útil para ti y otros usuarios, por favor acepta mi respuesta. Creo que es más útil que otros.

    – Renish Khunt

    1 de octubre de 2021 a las 4:49

avatar de usuario
Renish Khunt

Probar exclude.

$args = array(
      'posts_per_page'    => 3,
      'orderby'           => 'meta_value',
      'order'             => 'ASC',
      'post_type'         => 'fasthomepress_pt',
      'exclude'      => array(get_the_id()),
      'meta_query'        => array(
                                array(
                                    'key' => 'custom_richiesta',
                                    'value' => array($custom_boxes['custom_richiesta'][0] - 10000, $custom_boxes['custom_richiesta'][0] + 10000 ),
                                    'type' => 'numeric',
                                    'compare' => 'BETWEEN'
                                  )
                          )
  );

  • Gracias por su respuesta. Desafortunadamente, no funciona, probé con excluir —> array() y excluir —-> valores, el resultado es siempre el mismo.

    – marco

    20 de febrero de 2015 a las 10:43

  • ¡RESUELTO! Fue mi error. Probé este bucle get_posts() dentro de otro bucle y no lo coloqué bien. Moví este ciclo fuera del ciclo principal y todo funcionó bien, ¡gracias por su apoyo!

    – marco

    20 de febrero de 2015 a las 10:51

Aquí hay una función que hace exactamente eso:

    function get_lastest_post_of_category($cat){
    $args = array( 'posts_per_page' => 1, 'order'=> 'DESC', 'orderby' => 'date', 'category__in' => (array)$cat);
    $post_is = get_posts( $args );
    return $post_is[0]->ID;
}

Uso: digamos que mi ID de categoría es 22 y luego:

$last_post_ID = get_lastest_post_of_category(22);

también puede pasar una matriz de categorías a esta función.

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array(
    'posts_per_page'   => 18,
     'paged'           => $paged,
    'offset'           => 0,
    'post__not_in'     => array($last_post_ID,),
    'category'         => '',
    'category_name'    => '',
    'orderby'          => 'post_date',
    'order'            => 'DESC',
    'include'          => '',
    'exclude'          => '',
    'meta_key'         => '',
    'meta_value'       => '',
    'post_type'        => 'post',
    'post_mime_type'   => '',
    'post_parent'      => '',
    'post_status'      => 'publish',
    'suppress_filters' => true
);
// The Query
$the_query = new WP_Query( $args );

  • ¡Gracias por compartir esto! ¡Lo intentaré pronto!

    – marco

    21 de marzo de 2015 a las 17:42

¿Ha sido útil esta solución?