Wie ändert man die Abfrage auf Kategorieseiten, um nur “sticky posts” anzuzeigen?

Ich verwende den folgenden Code, um Posts auf Kategorieseiten zu filtern, sodass nur Posts angezeigt werden.

add_action( 'pre_get_posts', function( \WP_Query $q ) { if( ! is_admin() && $q->is_category() && $q->is_main_query() ) { $sticky_posts = get_option( 'sticky_posts' ); if( ! empty( $sticky_posts ) ) $q->set( 'post__in', (array) $sticky_posts ); } } ); ?> 

Das Problem ist, dass, wenn es keine Posts gibt, alle Posts der Kategorie angezeigt werden. Wenn keine Posts vorhanden sind, möchte ich keine Posts anzeigen.

Solutions Collecting From Web of "Wie ändert man die Abfrage auf Kategorieseiten, um nur “sticky posts” anzuzeigen?"

Setzen Sie einfach ‘post__in’ auf ein Null-Array.

 add_action( 'pre_get_posts', function( \WP_Query $q ) { if( ! is_admin() && $q->is_category() && $q->is_main_query() ) { $sticky_posts = get_option( 'sticky_posts' ); //If there are sticky posts if( ! empty( $sticky_posts ) ) { $q->set( 'post__in', (array) $sticky_posts ); } //If not else { $q->set( 'post__in', array(0) ); } } } ); 

Verwenden Sie else- statement für das gefundene Ergebnis

 < ?php add_action( 'pre_get_posts', function( \WP_Query $q ) { if( ! is_admin() && $q->is_category() && $q->is_main_query() ) { $sticky_posts = get_option( 'sticky_posts' ); if( ! empty( $sticky_posts ) ) { $q->set( 'post__in', (array) $sticky_posts ); } else { echo "No posts found"; } } } ); ?>