Ich bin in einem Chaos. Ich weiß, dass dies eine dumme Frage ist. Sie sehen, dass der Themenpfad nicht so gut ist. Gibt es also einen anderen Weg? Wie kann ich ihn get_template_directory()
hier verwenden?
// theme folder path
if ( ! defined( 'TZSC_THEME_DIR' ) ) {
define( 'TZSC_THEME_DIR', dirname(__FILE__).'/' );
}
// theme folder URL
if ( ! defined( 'TZSC_THEME_URL' ) ) {
define( 'TZSC_THEME_URL', plugin_dir_url( __FILE__ ) );
}
theme-development
Ashraf
quelle
quelle
Antworten:
Verwenden Sie dafür keine Konstanten. Verwenden Sie überhaupt keine globalen Konstanten.
Es gibt zwei Arten von Konstanten: Klassen- / Schnittstellenkonstanten und globale Konstanten.
Konstanten in Klassen oder Schnittstellen sind in Ordnung und manchmal nützlich. Ein zu vereinfachtes Beispiel:
Beachten Sie jedoch, dass diese Konstanten immer öffentlich sind. Wenn Sie sie später ändern, können Sie den von ihnen abhängigen Code beschädigen.
Dies ist bei globalen Konstanten noch schlimmer. Stellen Sie sich Folgendes vor:
Und dann eine Funktion für ein Standard-Header-Bild:
Diese Funktion geht von etwas aus, das außerhalb ihrer Kontrolle liegt, sie weiß zu viel. Wie testet man diese Funktion mit unterschiedlichen Werten für die Konstante? Das kannst du nicht.
Angenommen, Sie möchten testen, was passiert, wenn die Konstante auf ein nicht vorhandenes Verzeichnis oder einen anderen, langsameren Server festgelegt wird. Sobald Sie die Konstante definiert haben, können Sie ihren Wert nicht mehr ändern. Sie können nicht alle Tests auf einmal ausführen. Dies macht das Testen schwieriger als nötig.
Und in einem untergeordneten Thema, das versucht, ein eigenes Standardbild zu verwenden - wie implementieren Sie das? Die Konstante wird durch das übergeordnete Thema festgelegt. Sie könnten einen Scheck mit hinzufügen
defined()
, aber das macht es schwieriger zu sehen, wo sein Wert tatsächlich geschrieben wurde.Es wäre viel besser, die Funktion umzuschreiben, um:
Ich habe vorhin gesagt, Konstanten sind eine API. APIs sollten leicht zu ändern sein, aber es ist wirklich schwierig, eine Konstante zu verwerfen, da PHP den Zugriff nicht protokolliert. Daher wird Ihre Ablehnungsnachricht niemals andere Entwickler erreichen, es sei denn, sie lesen Ihren Quellcode oder Ihre Dokumente sehr sorgfältig. Vertrau mir, das tun sie nicht.
Verwendung
get_stylesheet_directory_uri()
in untergeordneten undget_template_directory_uri()
übergeordneten Themen. Beide können zur Laufzeit gefiltert werden, sodass Sie alle Tests gleichzeitig ausführen können.quelle