Der richtige Weg, wp_query innerhalb eines Plugins auszuführen

Ich entwickle ein Plugin, das eine Abfrage eines benutzerdefinierten Post-Typs machen und Daten und Metadaten aus diesen Posts abrufen muss. Aber wann immer ich diese Abfrage in meinem Plugin starte, egal welche Admin-Post-Seite ich hochziehe (in jedem Post, benutzerdefinierten Post-Typ oder Seite) gibt es Daten, die bereits ausgefüllt sind, und zwar vom ersten benutzerdefinierten Post Typ, den ich in meinem Plugin abfrage. So habe ich zum Beispiel in meinem Plugin:

add_action('wp','myfunction'); function myfunction(){ $mcpt_query = array(); $the_query = new WP_Query('post_type=mcpt'); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); $mcpt_query[] = array( 'id' => get_post_meta(get_the_ID(), 'idkey', true ), 'field1' => get_post_meta(get_the_ID(), 'field1key', true ), 'title' => get_the_title($post->ID) ); endwhile; endif; return $mcpt_query; wp_reset_postdata(); } 

Und wenn das obige in meinem Plugin ist, wird jede post-new.php-Seite, die im admin angezeigt wird, mit dem ersten Post von diesem benutzerdefinierten Post-Typ (mcpt) vorgefüllt, anstatt mir eine leere neue Post-Seite zum Ausfüllen zu geben.

Irgendwelche Ideen, was das verursacht?

Solutions Collecting From Web of "Der richtige Weg, wp_query innerhalb eines Plugins auszuführen"

Hier ist, was es getriggers hat (obwohl ich nicht sicher bin, WARUM, da irgendeine der einzelnen Handlungen unten es NICHT triggerse):

Ich habe die Aktion losgeworden, von WP Query zu get_posts gewechselt und bin über Reset zurückgesetzt worden.

 function myfunction(){ $mcpt_query = array(); $the_query = get_posts('post_type=mcpt'); foreach ( $the_query as $post ) : setup_postdata( $post ); $mcpt_query[] = array( 'id' => get_post_meta(get_the_ID(), 'idkey', true ), 'field1' => get_post_meta(get_the_ID(), 'field1key', true ), 'title' => get_the_title($post->ID) ); endforeach; wp_reset_postdata(); return $mcpt_query; }