Comment supprimer des pages de la recherche?

13

Je n'ai pas besoin de rechercher des pages sur mon site et je souhaite uniquement rechercher des publications, existe-t-il un moyen de le faire? Merci


la source

Réponses:

28

Les éléments ci-dessous devraient rendre le type de publication de page impossible à rechercher.

function remove_pages_from_search() {
    global $wp_post_types;
    $wp_post_types['page']->exclude_from_search = true;
}
add_action('init', 'remove_pages_from_search');
prettyboymp
la source
Où dois-je placer ce code? Merci
Vous pouvez le placer dans functions.php de votre thème.
prettyboymp
Merci beaucoup. Je viens de le copier-coller et cela fonctionne parfaitement
13

Ce qui suit dans functions.php fonctionne également bien:

//Remove pages from search results
function mySearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');
Arnold
la source
devrait être la sollicution. plus élégant, plus maintenable. hte ci-dessus ne fait que modifier les paramètres du type de message, celui-ci la requête de recherche elle-même. +1
kaiser
La modification de l'objet de type de publication pour le type de publication «page» est une meilleure solution. Cette solution oblige le type de publication à être défini en tant que «publication» pour toutes les requêtes de recherche, ce qui empêcherait tout type de publication personnalisé d'apparaître dans la recherche si un site en avait. La définition globale de la propriété exclude_from_search de l'objet de type de publication «page» signifie que tout code qui dépend de la vérification de cette propriété aura les informations correctes.
prettyboymp
Lien quelque peu pertinent avec un peu plus d'informations: codex.wordpress.org/…
its_me
Fonctionne bien, mais pas le sujet dans bbpress, donc ce n'est pas bon. Utilisation de "$ wp_post_types ['page'] -> exclude_from_search = true;" est une bonne option semble
Kishore Sahoo
0

mettez ceci dans votre search.php

<?php if (is_search() && ($post->post_type=='page')) continue; ?>

juste en dessous de ce code -> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

vous pouvez en trouver plus ici http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages

andrewk
la source
Je n'ai pas de fichier search.php si j'en récupère un à partir d'un autre thème cela fonctionnera-t-il? Merci
Oui. créez d'abord un fichier search.php vide, puis copiez et collez le code à partir de index.php. alors fais ce que je t'ai dit plus haut.
andrewk
1
en fait, vous devriez utiliser le code de @ prettyboymp. c'est plus facile et fait ce que vous avez demandé. je l'ai testé. si vous voulez ..
andrewk