Ansicht von 9 Antworten – 1 bis 9 (von insgesamt 9)
  • Moderator Bego Mario Garde

    (@pixolin)

    Thread-Starter Alexander Wagner

    (@agw2020)

    @pixolin

    Danke für deine Antwort. Jetzt habe ich die Domain so https://www.agw-international.com/search?q= , aber wenn ich etwas suche erhalte ich Page Not Found.

    Moderator Bego Mario Garde

    (@pixolin)

    ¯\_(ツ)_/¯

    Ich hab das Tutorial nicht geschrieben und weiß auch nicht, was du jetzt wie umgesetzt hast. Es werden ja verschiedene Lösungswege angeboten.

    Thread-Starter Alexander Wagner

    (@agw2020)

    @pixolin

    In meiner functions.php habe ich dass so hinzugrefügt:

    function wpb_change_search_url() {
        if ( is_search() && ! empty( $_GET['s'] ) ) {
            wp_redirect( home_url( "/search?q=" ) . urlencode( get_query_var( 's' ) ) );
            exit();
        }   
    }
    add_action( 'template_redirect', 'wpb_change_search_url' );
    Moderator Hans-Gerd Gerhards

    (@hage)

    Hallo,
    teste doch mal bitte:

    function wp_change_search_url() {
        if ( is_search() && ! empty( $_GET['s'] ) ) {
            wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
            exit();
        }  
    }
    add_action( 'template_redirect', 'wp_change_search_url' );

    Quelle – habe ich hier getestet und funktioniert.

    Viele Grüße
    Hans-Gerd

    Thread-Starter Alexander Wagner

    (@agw2020)

    Danke @hage! Jetzt nur meine Frage kann man statt ,,/search/serch-begriff“ auch ,,/search?q=“ machen.

    Moderator Bego Mario Garde

    (@pixolin)

    Der Teil der URL, der mit dem Fragezeichen beginnt, ist ein GET-Parameter, der der Seite übergeben wird. Zu einem Parameter ?g= ist aber keine Funktion hinterlegt. Die müsstest du erst hinzufügen.
    — — —
    Etwas ausführlicher:

    Wenn du folgenden Code verwendest

    
    <?php
    echo 'Hallo ' . htmlspecialchars($_GET["name"]) . '!';
    ?>
    

    wird bei Abruf von https://example.com/?name=agw2020 der Text Hallo agw2020! ausgegeben. Rufst du jetzt die URL mit einem anderen GET-Parameter auf, also z.B. https://example.com/?user=agw2020, wird nur Hallo ! ausgegeben – der GET-Parameter name wurde nicht übergeben und für den GET-Parameter user fehlt eine Ausgabe.

    Um jetzt den GET-Parameter ?q= für eine Suche zu verwenden, müsstest du auf der Seite mit dem Suchformular eine Such-Query erstellen, die den GET-Parameter als Argument verwendet.

    Thread-Starter Alexander Wagner

    (@agw2020)

    @pixolin

    Danke für deine informative Antwort. Nur mein Problem ist, dass ich keine Datei namens searchform.php oder ähnliche habe. Aber irgendwo sollte es eine geben, wenn würde es nicht funktionieren, oder?

    Moderator Bego Mario Garde

    (@pixolin)

    searchform.php ist ein Template für das Suchformular, z.B. in Twenty Twenty.

    Gibt es dafür kein Template, wertet WordPress den GET-Parameter trotzdem aus und fällt auf ein allgemeineres Template zurück.

    Es gibt noch andere GET-Parameter, die auf jeder Webseite funktionieren, z.B https://example.com/?p=42 zum Abruf des Posts mit der Datenbank-ID 42 (kann eine Seite oder ein Beitrag sein – „post“ gilt hier im weiteren Sinn als Datenbankeintrag in der Tabelle wp_posts).
    Mit add_query_arg() kannst du weitere GET-Parameter verwenden. Vielleicht kommst du damit weiter. Dokumentation: https://developer.wordpress.org/reference/functions/add_query_arg/

    Die Abfrage https://example.com/?s=begriff funktioniert übrigens bei jeder WordPress-Website, unabhängig ob es ein Suchformular gibt. Ich halte es für keine gute Idee, daran rumzubiegen.

Ansicht von 9 Antworten – 1 bis 9 (von insgesamt 9)
  • Das Thema „bei Theme Astra Suche ändern“ ist für neue Antworten geschlossen.