Get_template_directory () im untergeordneten Thema überschreiben?

8

Ist es möglich, eine get_template_directory()Datei in der Datei functions.php meines Kindes zu ersetzen ?

Ich möchte Änderungen an der Datei vornehmen:

/**
* Load Custom Post types file.
*/
require get_template_directory() . '/inc/post-types.php';

Ich würde es natürlich vorziehen, wenn meine Arbeit nicht überschrieben wird, wenn ich mein Thema aktualisiere. Kann ich also die übergeordnete Datei abmelden und dann die Datei meines Kindes erneut in der Funktionsdatei meines Kindes registrieren?

Heidekraut
quelle
Gibt es eine Aktion in der post-types.php? Wenn ja, können Sie möglicherweise die Aktion oder einen Hook in dieser Datei entfernen?
Czerspalace
Die Registrierung nach dem Typ hat eine Aktion, mit der Sie sie ändern können. Wenn Sie erklären, was Sie in dieser Datei ändern möchten, müssen Sie sie möglicherweise nicht vollständig ersetzen.
Milo
Ich muss mich viel ändern. Meist die Namen und Unterstützungen der verschiedenen benutzerdefinierten Beitragstypen.
Heather
Sie können get_template_directory_uri () im untergeordneten Thema verwenden.
Pardeep

Antworten:

19

Späte Antwort, aber in Wordpress 4.7 wurden zwei neue Funktionen eingeführt, um diese Frage zu beantworten.

get_theme_file_path()(für absolute Dateipfade) und get_theme_file_uri()(für URLs) funktionieren genau so, get_template_part()dass sie automatisch zuerst im untergeordneten Thema nach dieser Datei suchen und dann auf das übergeordnete Thema zurückgreifen.

In Ihrem Beispiel könnten Sie es mit 4.7 neu schreiben, um so auszusehen:

/**
* Load Custom Post types file.
*/
require get_theme_file_path( 'inc/post-types.php' );

Weitere Informationen hier: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/

Brianjohnhanna
quelle
11

Sie müssen get_stylesheet_directory_uri()anstelle get_template_directory()Ihres untergeordneten Themas verwenden.

Aus dem WordPress-Codex:

get_template_directory_uri ()

Wenn ein untergeordnetes Thema verwendet wird, wird der URI des übergeordneten Themenverzeichnisses zurückgegeben. get_template_directory_uri () sollte für Ressourcen verwendet werden, die nicht in ein untergeordnetes Thema aufgenommen oder von diesem überschrieben werden sollen. Verwenden Sie get_stylesheet_directory_uri (), um Ressourcen einzuschließen, die in das untergeordnete Thema aufgenommen oder von diesem überschrieben werden sollen.

get_stylesheet_directory_uri ()

Wenn ein untergeordnetes Thema verwendet wird, gibt diese Funktion den URI des untergeordneten Themenverzeichnisses zurück. Verwenden Sie get_template_directory_uri (), um zu vermeiden, dass Sie von einem untergeordneten Thema überschrieben werden.

James Barrett
quelle
2
Ja, aber da get_template_directory () in meinem übergeordneten Thema enthalten ist, kann ich mit meinem untergeordneten Thema etwas tun, um dies zu ändern?
Heather