2015-02-20 14 views
5

Guten Morgen, ich fand viele ähnliche Fragen, aber keine Antwort passte zu meinem Problem. Der Punkt ist sehr einfach: Ich habe eine benutzerdefinierte Schleife mit get_posts(), und ich möchte den aktuellen Beitrag von der Anzeige ausgeschlossen werden.Beiträge von get_posts() ausschließen

Der Code ist:

$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' 
            ) 
          ) 
    ); 

Ich habe versucht, mit:

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

und mit vielen anderen Kombinationen mit oder ohne Array. Als Fluch wird die aktuelle Post-ID vor dieser Schleife korrekt wiedergegeben, und wenn ich Echo ($ post-> ID) und echo (get_the_ID()) versuche, habe ich das gleiche, korrekte Ergebnis.

Ich weiß nicht wirklich, was geschieht, vielen Dank für die Hilfe,

Marco

+0

Versuchen Sie, Ihre Meta-Abfrage jetzt zum Testen zu entfernen und überprüfen Sie, ob es den aktuellen Beitrag entschuldigt. Die Syntax ist korrekt, es kann das Problem mit der Meta-Abfrage sein, denke ich. – user46487

+0

Ich löste es jetzt, es war mein Fehler !! Ich habe diese get_posts() - Schleife in einer anderen Schleife ausprobiert, und ich habe sie nicht gut platziert. Ich habe diese Schleife außerhalb der Hauptschleife bewegt und alles hat gut funktioniert, danke für deine Unterstützung! – Marco

Antwort

6

hier ist eine Funktion, die genau das tut:

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; 
} 

Verbrauch: sagen, meine Kategorie-ID 22 ist dann:

$last_post_ID = get_lastest_post_of_category(22); 

Sie können auch eine Reihe von Kategorien an diese Funktion übergeben.

$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); 
+1

Vielen Dank für das Teilen! Ich werde es bald versuchen! – Marco

12

versuchen exculde das für mich arbeitet.

$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' 
           ) 
         ) 
); 

Ich hoffe, das funktioniert für Sie.

+0

Vielen Dank für Ihre Antwort. Leider klappt es nicht, ich habe es mit ausschließen ---> array() und ausschließen ----> werte, das ergebnis ist immer das selbe. – Marco

+0

Gelöst! Es war mein Fehler. Ich habe diese get_posts() - Schleife in einer anderen Schleife ausprobiert, und ich habe sie nicht gut platziert. Ich habe diese Schleife außerhalb der Hauptschleife bewegt und alles hat gut funktioniert, danke für deine Unterstützung! – Marco

Verwandte Themen