Wo soll ich eine PHP-Datei von wp-includes kopieren, um sie in meinem Child-Theme zu überschreiben?

Ich habe viele Fragen über das Ändern von Sachen in wp-includes und viele Antworten gesehen, die unter keinen Umständen sagen. Allerdings muss ich etwas ändern, das gerade da ist! Ich bin glücklich, eine Kopie davon zu machen und das zu ändern, aber ich weiß nicht, wo ich es hinstellen soll. Soll ich beispielsweise einen wp-includes Ordner innerhalb meines Child-Themes (auf der gleichen Ebene wie functions.php ) erstellen? Ich habe versucht, es neben meiner functions.php aber es wird nicht dort aufgehoben.

BEARBEITEN: Insbesondere möchte ich die class-wp-embed.php , um eine zusätzliche Zeile in ihre öffentliche shortcode function aufzunehmen.

Solutions Collecting From Web of "Wo soll ich eine PHP-Datei von wp-includes kopieren, um sie in meinem Child-Theme zu überschreiben?"

Sie müssen die Core-Datei nicht ändern. Sie sind classn, was bedeutet, dass sie erweitert werden können. Es erfordert etwas Beinarbeit, aber Sie müssen nur eine Instanz der class laden und dann erweitern / hinzufügen. Das ist die Schönheit von OOP. Das ist, wenn es keinen Haken gibt, um Dinge mit bereits zu modifizieren, die es wahrscheinlich geben wird.

Sie sollten WordPress Core niemals ändern. Die Leute, die dir das empfehlen, irren sich. Der Grund dafür ist, dass Sie beim Update von WordPress alle Ihre Änderungen verlieren. Es bedeutet auch, dass Annahmen Plugins darüber machen, wie Core-Arbeit durch Ihre Änderungen gebrochen werden kann.

Wenn Sie das Core-Verhalten ändern, Dinge entfernen, Dinge hinzufügen oder ändern müssen, sollten Sie stattdessen Aktionen und Filter verwenden.

Wenn ich zum Beispiel ‘hallo Welt’ im Kopf widerhallen möchte, könnte ich das tun:

 add_action( 'wp_head', function() { echo 'hello world'; } ); 

Es ist zwar verlockend, class-wp-embed.php zu class-wp-embed.php , um einen neuen oembed-Provider hinzuzufügen und das Array $providers im Konstruktor zu ändern.

Oder Sie können weiter unten lesen und den Filter erkennen:

 $this->providers = apply_filters( 'oembed_providers', $providers ); 

Dann benutze es, um einen Provider hinzuzufügen, der den Filter stattdessen in deinem Plugin benutzt:

 add_filter( 'oembed_providers', function ( $providers ) { $providers['#http://(www\.)?youtube\.com/watch.*#i'] = array( 'http://www.youtube.com/oembed', true ); return $providers; } ); 

Als letzte Anmerkung sollte alles, was functionalität hinzufügt, die Inhalte ändern kann, wie benutzerdefinierte Post-Typen, Taxonomien, Shortcodes, Oembeds, nicht in Ihrem Thema sein. Sie sollten in einem Plugin sein. Der Grund dafür ist Datenübertragbarkeit. In dem Moment, in dem der Benutzer Themen wechselt, sind alle seine Overmed-Shortcodes und benutzerdefinierten Post-Typen nicht mehr verfügbar oder funktionieren nicht mehr.

Als letzte Anmerkung, Oembeds erfordern nicht die Verwendung eines Shortcodes, kopieren Sie einfach das Einfügen der URL in den Editor in einer eigenen Zeile wird es in eine vollständige Einbettung konvertieren