web-dev-qa-db-de.com

Wie überschreibe ich eine nicht steckbare übergeordnete Designfunktion?

Ich habe eine PHP Vorlage in meinem untergeordneten Design, die eine Funktion ale_filter() über aufruft

        <div class="articles">
            <?php ale_filter($_POST);?>
        </div>

Die Funktion ist in einer übergeordneten Designdatei definiert: /aletheme/functions.filter.php. Ich möchte diese Datei in mein untergeordnetes Design kopieren, Änderungen an der Funktion vornehmen und sicherstellen, dass die betreffende Vorlage PHP diese Funktion aufruft und nicht die übergeordnete Designfunktion. Wie mache ich das?

Ich habe die übergeordnete Designdatei bereits unter Verwendung desselben Dateinamens und relativen Pfads (/aletheme/functions/filter.php) in mein untergeordnetes Design kopiert.


Eine vorherige Stapelaustausch-Frage verknüpft mit einer Seite mit drei Methoden. Diese drei Methoden waren:

  • Plug-in-Funktionen nutzen - Diese Methode ist nur verfügbar, wenn die übergeordnete Designfunktion plug-in-fähig ist. Meins ist es nicht.
  • Erhöhen Sie die Priorität für die untergeordnete Themenfunktion. Ich bin mir nicht ganz sicher, wie ich das in meinem Fall tun soll. Das angegebene Beispiel betraf eine übergeordnete Designfunktion, die an einen WordPress-Hook angehängt ist, und meins nicht. Die PHP Manpage auf proc_Nice war auch nicht so klar. Ich schätze, ich könnte das ein bisschen weiterverfolgen. Vielleicht hat hier jemand Ideen.
  • Verwenden von Hooks, Aktionen und Filtern - Diese Methode gilt nur, wenn die übergeordnete Designfunktion an einen WordPress-Hook angehängt ist. Ich glaube nicht, dass das in meinem Fall zutrifft.

Ich habe mehrere andere Fragen zu Stack Exchange gefunden, aber die Antworten in allen beschriebenen Methoden, von denen ich glaube, dass sie in meinem Fall nicht zutreffen:

Vielen Dank.

4
cag8f

Da die Funktion in der Vorlage Ihres Kinderthemas verwendet wird, hindert Sie nichts daran, eine Funktion mit einem anderen Namen zu verwenden. Sie müssen die Funktion also nicht wirklich einstecken, sondern nur eine Funktion erstellen, die das tut, was Sie wollen, und stattdessen diese Funktion verwenden.

Kopieren Sie also ale_filter() in Ihr untergeordnetes Thema, benennen Sie es in ale_child_filter() um, ändern Sie es nach Belieben und ändern Sie dann einfach Ihre Vorlage, um diese Funktion zu verwenden.

Sie müssen eine Funktion nur anschließen, wenn die Funktion an einer Stelle verwendet wird, die Sie nicht mit Ihrem untergeordneten Thema überschreiben können. Wenn Sie es einstecken, können Sie eine Funktion neu definieren, wenn Sie keinen Zugriff haben, um den Verwendungsort der Funktion zu ändern. Da Sie ändern können, welche Funktion verwendet wird, ist das Anschließen der Funktion nicht erforderlich.

6
Jacob Peattie