Je développe un plugin qui doit interroger un type de message personnalisé et récupérer des données et métadonnées à partir de ces messages. Mais à chaque fois que j'exécute cette requête dans mon plug-in, peu importe la nouvelle page de publication que je tire (dans n'importe quel message, type de message personnalisé ou page), des données sont pré-remplies et il s'agit du premier message personnalisé. tapez je demande dans mon plugin. Ainsi, par exemple, dans mon plugin, j'ai:
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();
}
Et si ce qui précède se trouve dans mon plugin, toute page post-new.php extraite dans admin sera préremplie avec le premier message de ce type de message personnalisé (mcpt), au lieu de me donner une nouvelle page de message vierge à remplir.
Des idées ce qui cause ceci?
Voici ce qui a résolu le problème (même si je ne suis pas sûr de savoir pourquoi aucune des actions ci-dessous ne l’a résolu):
Je me suis débarrassé de l'action, je suis passé de WP Query à get_posts et j'ai déplacé reset au-dessus de return.
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;
}