Wenn post_type dies oder das ist

Ich benutze diesen Code in meiner functions.php , um meine benutzerdefinierten Post-Typen nach Titel in aufsteigender Reihenfolge zu sortieren.

 function set_custom_post_types_admin_order($wp_query) { if (is_admin()) { $post_type = $wp_query->query['post_type']; if ( $post_type == 'games') { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } if ( $post_type == 'consoles') { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } } } add_filter('pre_get_posts', 'set_custom_post_types_admin_order'); 

Gibt es eine Möglichkeit, diese beiden if statementen zu kombinieren, also wiederhole ich den Code nicht. Etwas wie das:

 if ( $post_type == 'games' OR 'consoles') OR { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } 

Vielen Dank!

Solutions Collecting From Web of "Wenn post_type dies oder das ist"

Verwenden Sie eine switch-statement und kombinieren Sie Ihre übereinstimmenden Fälle.

 function set_custom_post_types_admin_order( $query ) { // If not admin or main query, bail. if( !is_admin() || !$query->is_main_query() ) return; $post_type = $query->query['post_type']; switch( $post_type ) { case 'games': case 'consoles': //case 'other_example_match': $query->set('orderby', 'title'); $query->set('order', 'ASC'); break; default: return; } } add_action( 'pre_get_posts', 'set_custom_post_types_admin_order' ); 

Ich hoffe, das hilft.

Zunächst solltest du beim Anhängen an den pre_get_posts-Hook wirklich vorsichtig sein. Dies wird bei jeder einzelnen Abfrage ausgetriggers, die auf Ihrer Website ausgeführt wird. Ich rate Ihnen dringend, am Anfang Ihrer function eine oder zwei weitere Bedingungen hinzuzufügen, um den scope dieses Filters zu begrenzen.

Zweitens würde ich vorschlagen zu überprüfen, if ( in_array( $post_type, array( 'games', 'consoles' ) ) als eine bessere Alternative für Ihre Bedingung.

Die Art und Weise, wie Sie die OR-statement hier verwenden, ist eigentlich falsch, und Sie müssen die Bedingung besser erweitern, zB if ( $post_type == 'games' || $post_type == 'consoles' ) . Wenn Sie sich entscheiden, bei dieser Art des Schreibens der Bedingung zu bleiben, würde ich auch die Gewohnheit empfehlen, “yoda conditions” zu schreiben, so: if ( 'games' == $post_type || 'consoles' == $post_type ) .

In einer “Yoda-Bedingung” folgt auf den Wert die Variable, wodurch es viel einfacher ist, ein fehlendes = -Symbol und eine errorshafte statement zu erkennen. Dein Leben wird auf diese Weise viel glücklicher sein, vertraue mir 🙂

Doppelrohre || den Tag retten!

 if ( $post_type == 'games' || 'consoles') OR { $wp_query->set('orderby', 'title'); $wp_query->set('order', 'ASC'); } 

Das macht genau das, was ich gemacht habe!

Edit: or funktioniert auch anstelle des Doppelpfeifens. Du lernst jeden Tag etwas Neues!

 $query->set('post_type', array( 'post', 'movie' ) ); 

Oder andere Beispiele können Sie hier sehen: http://devotepress.com/wordpress-coding/when-to-use-pre_get_posts-in-wordpress/