Abrufen der Liste eines benutzerdefinierten Post-Typs in einem Widget ohne Verwendung von WP_Query?

Ich verwende das folgende Widget, um eine Liste der Jobs vom benutzerdefinierten Post-Typ abzurufen:

class FeaturedJobsWidget extends WP_Widget { function FeaturedJobsWidget() { $widget_ops = array('classname' => 'FeaturedJobsWidget', 'description' => 'Displays a random post with thumbnail' ); $this->WP_Widget('FeaturedJobsWidget', 'Featured Jobs', $widget_ops); } function form($instance) { $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) ); $title = $instance['title']; ?> 

<label for="get_field_id('title'); ?>">Title: <input class="widefat" id="get_field_id('title'); ?>" name="get_field_name('title'); ?>" type="text" value="" />

<?php echo $after_widget; } }

Das Problem ist, dass dieser Teil:

  query('post_type=jobs&posts_per_page=8'); while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?> 

Scheint, andere Widgets zu brechen (nicht sicher, ob es eine schlechte Übung ist, WP_Query in einem Widget zu verwenden).

Gibt es eine andere Möglichkeit, eine Liste mit benutzerdefinierten Post-Typen in einem Widget anzuzeigen?

Solutions Collecting From Web of "Abrufen der Liste eines benutzerdefinierten Post-Typs in einem Widget ohne Verwendung von WP_Query?"

Verwenden Sie die function wp_reset_postdata () nach der while-Schleife, um die benutzerdefinierte wp_query wie im folgenden Code gezeigt zurückzusetzen, so dass sie keine andere WordPress-Schleife unterbricht.

  < ?php // Create and run custom loop $custom_posts = new WP_Query(); $custom_posts->query('post_type=jobs&posts_per_page=8'); while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?> 
  • < ?php the_title(); ?>
  • < ?php endwhile; ?> < ?php wp_reset_postdata(); ?>

    Für weitere Informationen besuchen Sie diese Seite .

    Es ist nicht klar, was Sie meinen, indem Sie andere Widgets brechen , aber Sie könnten versuchen, hinzuzufügen

     wp_reset_postdata() 

    Nach der while-Schleife, um die globale $post Variable wiederherzustellen, oder versuchen Sie es stattdessen

     get_posts( array('post_type' => 'jobs','posts_per_page' => '8') ); 

    um zu sehen, ob das einen Unterschied macht.