Wie entferne ich Pages aus der Suche?

13

Ich muss nicht nach Seiten auf meiner Website suchen und möchte nur nach Beiträgen suchen. Gibt es eine Möglichkeit, dies zu tun? Vielen Dank


quelle

Antworten:

27

Das Folgende sollte den Typ des Seitenposts nicht länger durchsuchbar machen.

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
quelle
Wo platziere ich diesen Code? Vielen Dank
Sie können es in die functions.php Ihres Themas einfügen.
prettyboymp
Vielen Dank. Ich habe es einfach kopiert und es funktioniert perfekt
13

Das Folgende in functions.php funktioniert auch gut:

//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
quelle
Soll die Lösung sein? eleganter, pflegeleichter. In den obigen Abschnitten werden nur Parameter vom Typ "Post" geändert, dies ist die Suchanfrage selbst. +1
Kaiser
Das Ändern des Beitragstypobjekts für den Beitragstyp "Seite" ist eine bessere Lösung. Diese Lösung erzwingt, dass der Beitragstyp für alle Suchanfragen als "Beitrag" festgelegt wird, damit benutzerdefinierte Beitragstypen nicht in der Suche angezeigt werden, wenn eine Website über solche verfügt. Wenn Sie die Eigenschaft exclude_from_search des Objekts vom Typ 'page' global festlegen, verfügt jeder Code, der von der Überprüfung dieser Eigenschaft abhängt, über die richtigen Informationen.
Prettyboymp
Etwas relevanter Link mit ein bisschen mehr Information: codex.wordpress.org/…
its_me
Funktioniert gut, aber kein Thema in BBPress, also ist es nicht gut. Verwenden von "$ wp_post_types ['page'] -> exclude_from_search = true;" ist eine gute Option scheint
Kishore Sahoo
0

Gib das in deine search.php ein

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

direkt unter diesem Code -> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

Weitere Informationen finden Sie hier http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages

Andrewk
quelle
Ich habe keine search.php, wenn ich eine von einem anderen Thema abrufe. Funktioniert das? Vielen Dank
Ja. erst eine leere search.php erstellen, dann den code aus index.php kopieren und einfügen. dann mach was ich dir oben gesagt habe.
Andrewk
1
eigentlich solltest du @ prettyboymps code verwenden. Es ist einfacher und macht, was Sie gefragt haben. Ich habe es getestet. wenn du willst ..
Andrewk