So leiten Sie zum Beitrag um, wenn die Suchergebnisse nur einen Beitrag zurückgeben

7

Ich möchte nach einer Suche Besucher zu meiner search.php senden, um eine Liste der Beiträge anzuzeigen. Wenn es nur ein Suchergebnis gibt, kann der Benutzer direkt auf den betreffenden Beitrag zugreifen (so etwas wie die Schaltfläche "Ich fühle mich glücklich" von GOOGLE).

Danke euch allen.

Marissa Tweel
quelle

Antworten:

11

Fügen Sie dieses Snippet Ihrer functions.php hinzu

function redirect_the_single_post() {
    if (is_search() && is_main_query()) {
        global $wp_query;
        if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
            exit;
        }
    }
} 
add_action('template_redirect', 'redirect_the_single_post' );

hoffe das wird dir helfen !!

Abhishek Kaushik
quelle
5
+1 dafür. Sie könnten / sollten jedoch auch prüfen, ob dies die Hauptabfrage ist, sodass ich die erste Zeile in folgende ändern würde : if (is_search() && is_main_query()) {. Und der Permalink kann auch generiert werden $GLOBALS['post']->ID- aber das ist nicht so viel kürzer. ;) Es geht aber darum, eine Eigenschaft eines Elements eines Arrays abzurufen. In Ihrem Code geht es darum, eine Eigenschaft eines Elements eines Arrays abzurufen, das eine Eigenschaft eines anderen Objekts ist.
Anfang
1
@AbhishekKaushik, nimm den Punkt und füge ihn der Antwort hinzu. Die Leute werden Ihr Snippet in den kommenden Jahren kopieren / einfügen, besser verbessern, nicht wahr? ;)
brasofilo