Warum funktioniert WP_Query in functions.php nicht, wenn get_posts funktioniert?

Ich habe folgenden Code in meiner functions.php. Wenn ich versuche, neue post_type (zB post, Anwälte) hinzuzufügen, füllt es Auszug, Slug (das betrifft in Permalink-Struktur), andere Metaboxen vom ersten Post von Anwälten post type.

Ich habe gegoogelt, aber etwas gefunden, das das Hinzufügen global $post; sagt global $post; Wird mein Problem lösen. Aber noch existiert ein Problem.

 function lawyers_checkbox_display( $post ) { global $post ; wp_nonce_field( 'lawyers_checkbox_display', 'lawyers_checkbox_display_nonce' ); $data = ""; if ($post->filter != 'raw') { $data = get_post_meta($post->ID,'_lawyer_id',true); } $args = array( 'posts_per_page' => -1, 'post_type' => 'lawyers', 'post_status' => 'publish', ); $query_lawyers = null; $query_lawyers = new WP_Query($args); while($query_lawyers->have_posts()): $query_lawyers->the_post(); $select = @in_array($post->ID,$data) ? 'checked="checked"' : ''; echo 'ID.'" '.$select.' id="'.$post->ID.'" name="lawyer_id[]" />'; echo ' '; echo '
'; endwhile; wp_reset_postdata(); }

Ich habe Lösung gefunden, indem ich get_posts() in meiner function verwende.

Kann jemand erklären, welchen Unterschied es macht? Warum WP_Query nicht richtig funktioniert.

  function lawyers_checkbox_display( $post ) { global $post ; wp_nonce_field( 'lawyers_checkbox_display', 'lawyers_checkbox_display_nonce' ); $data = ""; if ($post->filter != 'raw') { $data = get_post_meta($post->ID,'_lawyer_id',true); } $args = array( 'posts_per_page' => -1, 'post_type' => 'lawyers', 'post_status' => 'publish', ); $myposts = get_posts( $args ); foreach ( $myposts as $post ) { setup_postdata( $post ); $select = @in_array($post->ID,$data) ? 'checked="checked"' : ''; echo 'ID.'" '.$select.' id="'.$post->ID.'" name="lawyer_id[]" />'; echo ' '; echo '
'; } wp_reset_postdata(); }

Solutions Collecting From Web of "Warum funktioniert WP_Query in functions.php nicht, wenn get_posts funktioniert?"