Почему WP_Query в функциях.php не работает, когда работает get_posts?

У меня есть код в моих functions.php. Когда я пытаюсь добавить новый post_type (например, post, lawyers), он заполняет выдержку, slug (это влияет на структуру permalink), другие обменные ящики с первого поста типа post-mail для юристов.

Я googled, но нашел что-то, что говорит о добавлении global $post; решит мою проблему. Но проблема все еще существует.

 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 '<input type="checkbox" value="'.$post->ID.'" '.$select.' id="'.$post->ID.'" name="lawyer_id[]" />'; echo '<label for="'.$post->ID.'">'; _e( the_title(), 'myplugin_textdomain' ); echo '</label> '; echo '<br/>'; endwhile; wp_reset_postdata(); } в 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 '<input type="checkbox" value="'.$post->ID.'" '.$select.' id="'.$post->ID.'" name="lawyer_id[]" />'; echo '<label for="'.$post->ID.'">'; _e( the_title(), 'myplugin_textdomain' ); echo '</label> '; echo '<br/>'; endwhile; wp_reset_postdata(); } 

Я нашел решение, используя get_posts() в моей функции.

Может ли кто-нибудь объяснить, в чем разница? Почему WP_Query работает неправильно.

  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 '<input type="checkbox" value="'.$post->ID.'" '.$select.' id="'.$post->ID.'" name="lawyer_id[]" />'; echo '<label for="'.$post->ID.'">'; _e( $post->post_title, 'myplugin_textdomain' ); echo '</label> '; echo '<br/>'; } wp_reset_postdata(); }