2016-06-08 9 views
2

Ich schreibe ein Plugin und ich muss Admin-Benachrichtigungen über die Beiträge anzeigen. Ich rief die Funktion an, die Nachrichten bereitstellt.wp Reset-Abfrage funktioniert nicht in admin_notices

add_action('admin_notices', array($this, 'postNotices')); 

Und hier ist meine Funktion:

public function postNotices() { 

    $args = array(
     'post_type' => 'demo_post_type', 
     'post_status' => 'publish', 
     'posts_per_page' => -1, 
     'ignore_sticky_posts' => 1 
    ); 
    $query_post = new WP_Query($args); 

    if ($query_post->have_posts()) { 
     while ($query_post->have_posts()) { 
      $query_post->the_post(); 
      // $my_meta = 'Im getting post meta here'; ?> 
       <div>Some notification</div> 
      <?php wp_reset_query(); 
     } 
    } 
} 

Hinweise zeigt ordnungsgemäß funktioniert, aber wenn ich versuche, einen neuen Beitrag erstellen sie letzten Beitrag Daten wie Post-Titel in der neuen Post-Seite erscheint. Es bedeutet wp_reset_query() Funktion funktioniert nicht mit admin_notices Haken ich denke. Hat jemand einen Vorschlag?

Alle Vorschläge werden sehr geschätzt.

+2

Sie sollten 'wp_reset_postdata()', nicht 'wp_reset_query()' aufrufen, außerdem sollte dieser Aufruf außerhalb Ihrer 'while' Schleife erfolgen, und nicht innerhalb davon. –

+0

Nein, ich habe es versucht, aber es ist nutzlos. Ich habe die Antwort gefunden und werde in Antworten posten. Danke @PieterGoosen – Sahan

Antwort

0

Nach harter Forschung ich die Antwort foud, Hier gehen wir,

 $args = array(
     'post_type' => 'demo_post_type', 
     'post_status' => 'publish', 
     'posts_per_page' => -1, 
     'ignore_sticky_posts' => 1 
    ); 

    $query_posts = get_posts($args); 
    foreach ($query_posts as $post) { 
     ?> 
     <div>Some notification</div> 
     <?php 
    } 

Keine Notwendigkeit, Funktionen hinzufügen, wie wp_reset_query(). Ich habe die Antwort gefunden, weiß aber nicht, was die Logik ist. Wenn jemand es wissen sollte, bitte hier kommentieren.

+0

Es wird immer empfohlen, dass Sie es nach einer Abfrage mit ['wp_reset_postdata()'] (https://codex.wordpress.org/Function_Reference/wp_reset_postdata) zurücksetzen. –

+0

ist das obligatorisch? Ich erstelle hier kein Post-Objekt. – Sahan

+0

Nun, du bist wirklich. 'get_posts()' verwendet die 'WP_Query' Klasse um ein Abfrage Objekt zu erstellen;) [Weiterlesen] (https://codex.wordpress.org/Template_Tags/get_posts) –