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

search 

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');

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');

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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.