web-dev-qa-db-fra.com

SEULEMENT de pages, pas de messages?

J'essaie de ne renvoyer que des pages dans les résultats de recherche.

Cela fonctionne:

/?s=term&post_type=post

Il ne retourne que des posts, pas de pages.

Mais le contraire ne fonctionne pas:

/?s=term&post_type=page

Cela renvoie des pages et des messages.

Comment puis-je retourner seulement les pages?

Modifier

Oublié de mentionner, j'essaie de permettre à l'utilisateur de cliquer sur deux liens en haut de la page de résultats de recherche.

<a href="/?s=term&post_type=post">Search Only Posts</a>
<a href="/?s=term&post_type=page">Search Only Pages</a>

Par conséquent, je ne peux pas définir globalement tous les résultats de recherche comme étant l'un ou l'autre.

1
Corey

Vous pouvez appliquer un type de publication par rappel sur pre_get_posts:

is_admin() || add_action( 'pre_get_posts', function( \WP_Query $query ) {

    $post_type = filter_input( INPUT_GET, 'post_type', FILTER_SANITIZE_STRING );

    if ( $post_type && $query->is_main_query() && $query->is_search() )
        $query->set( 'post_type', [ $post_type ] );
});

Si cela inclut toujours d'autres types de publication, vous avez un deuxième rappel enregistré sur ce raccordement. Essayez de le trouver. ce pourrait être un thème ou un plugin.

2
fuxia