Правильный способ запуска wp_query изнутри плагина

Я разрабатываю плагин, который должен делать запрос пользовательского типа сообщения и извлекать данные и метаданные из этих сообщений. Но в любое время, когда я запускаю этот запрос внутри своего плагина, вне зависимости от того, какая новая страница администратора, которую я подтягиваю (в любом сообщении, пользовательском типе сообщений или на странице), есть данные, которые предварительно заполнены, и это с первого пользовательского сообщения тип, который я запрашиваю в своем плагине. Так, например, внутри моего плагина у меня есть:

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

И если приведенное выше в моем плагине, любая страница post-new.php, выведенная в админ, будет заполнена первым сообщением из этого настраиваемого типа сообщений (mcpt) вместо того, чтобы заполнить мою новую почтовую страницу.

Любые идеи, что вызывает это?

Solutions Collecting From Web of "Правильный способ запуска wp_query изнутри плагина"

Вот что это решило (хотя я не уверен, ПОЧЕМУ, поскольку ни одно из отдельных действий ниже НЕ решило):

Я избавился от действия, изменился с WP Query на get_posts и переместил сброс выше возврата.

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