Ändern der general-template

  • Hallo,
    ich hatte Änderungen an der general-template gemacht, die nach einer Aktualisierung von WP jetzt wieder flöten gegangen sind.
    Mittlerweile habe ich ein Child-Theme angelegt. Wenn ich hier allerdings in der functions.php die veränderte Funktion "function get_search_form" eintrage, bekomme ich die Fehlermeldung:
    Cannot redeclare get_search_form() (previously declared in wp-includes/general-template.php:180)

    Wo liegt mein Fehler? Wie muss ich vorgehen, um die Funktion function get_search_form in der general-template zu überschreiben? Kenne mich mit dem Thema Child-Theme leider noch nicht so gut aus. Kann mir jemand helfen?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • WordPress Core Funktionen kann man bis auf einige "pluggable" Ausnahmen in einem Theme oder Child-Theme nicht überschreiben.

    Änderungen im Core sind sehr unüblich, daher habe ich Deine Änderung auch wg. Verweis auf ein mittlerweile angelegtes Child-Theme auf ein Theme bezogen.

    Um Parameter oder Ausgaben von Core-Funktionen zu ändern, gibt es stattdessen viele sog. "Filter", in diesem Fall den get_search_form Filter, hier ein kleines Beispiel dazu mit viel erklärendem Kommentar.

    5 Mal editiert, zuletzt von b3317133 (23. April 2018 um 18:18)

  • WordPress Core Funktionen kann man bis auf einige "pluggable" Ausnahmen in einem Theme oder Child-Theme nicht überschreiben.

    Änderungen im Core sind sehr unüblich, daher habe ich Deine Änderung auch wg. Verweis auf ein mittlerweile angelegtes Child-Theme auf ein Theme bezogen.

    Um Parameter oder Ausgaben von Core-Funktionen zu ändern, gibt es stattdessen viele sog. "Filter", in diesem Fall den get_search_form Filter, hier ein kleines Beispiel dazu mit viel erklärendem Kommentar.

    Ich habe das Problem mittlerweile gelöst, indem ich eine callback definiert habe, und diese dem Filter im Child-Theme zugefügt.
    Konkret ging es um diese Zeile:
    <input type="submit" id="searchsubmit" value="'. esc_attr_x( 'Search', 'submit button' ) .'" />

    Grundlegendes Problem war, das ich ein Suchfeld habe aber der Suchbutton von meinem Thema ausgeblendet ist. Man konnte nur mit Return die Suche auslösen und nicht via Mausklick. Ich wollte jetzt den ganzen Button nicht wieder einblenden, sondern nur ein Lupenicon und auf klick damit die Suche auslösen. Wenn ich via CSS das Icon im input-Button als Hintergrundbild anlege, wird allerdings die Lupe vom Input-Text Search/Suche überlagert. Via CSS ausblenden bringt nichts, da der Mausfocus trotzdem noch auf den Text Suche/Search liegt.
    Wie löst man das? Siehe Bild...

    [Blockierte Grafik: https://image.ibb.co/jkvs9H/Screenshot_4.png]

    Ich hatte es jetzt so gelöst, indem ich bei value anstatt "Suche" nichts angebe...kann man bestimmt eleganter lösen, zumindest geht es aber so.
    <input type="submit" id="searchsubmit" value="'. esc_attr_x( 'Search', 'submit button' ) .'" />
    jetzt <input type="submit" id="searchsubmit" value="'. esc_attr_x( '', 'submit button' ) .'" />

  • Man könnte auch per CSS die Textfarbe transparent machen und den Button in der Grösse begrenzen, ein Beispiel mit Hintergrundbild hier. (ergänzt)

    Alternativer Ansatz falls Dein Website z.B. aus anderen Gründen bereits Font Awesome o.ä. nutzt. Dann braucht man kein Hintergrundbild sondern man fügt das passende Symbol als Text ein, ein Beispiel hier.

    Einmal editiert, zuletzt von b3317133 (23. April 2018 um 19:24)

  • Man könnte auch per CSS die Textfarbe transparent machen und den Button in der Grösse begrenzen, ein Beispiel mit Hintergrundbild hier. (ergänzt)



    Cursor : pointer geht bei background-image nicht


    Alternativer Ansatz falls Dein Website z.B. aus anderen Gründen bereits Font Awesome o.ä. nutzt. Dann braucht man kein Hintergrundbild sondern man fügt das passende Symbol als Text ein, ein Beispiel hier.

    Befinde mich im Eingabefeld, fällt also auch weg.

  • Cursor : pointer geht bei background-image nicht

    Hm, hier schon.

    Befinde mich im Eingabefeld, fällt also auch weg.

    Lt. Beschreibung befindest Du Dich im Submit-Button id="searchsubmit"?

    Hier das Beispiel angepasst mit Font Aweseome Button im Eingabefeld. (ergänzt)

    Poste doch mal Deinen ganzen Code des Suchformulars inkl. Eingabefeld oder am besten einen Link dorthin.

    3 Mal editiert, zuletzt von b3317133 (24. April 2018 um 11:15)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!