Je suis en désordre. Je sais que c'est une question idiote. Vous voyez que le chemin du thème n'est pas si bon. Alors, y a-t-il une autre façon? Comment puis-je l'utiliser get_template_directory()
ici?
// 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
la source
la source
Réponses:
N'utilisez pas de constantes pour cela. N'utilisez pas du tout de constantes globales.
Il existe deux types de constantes: les constantes classe / interface et les constantes globales.
Les constantes dans les classes ou les interfaces sont fines et parfois utiles. Un exemple trop simpliste:
Mais gardez à l'esprit que ces constantes sont toujours publiques. Si vous les modifiez ultérieurement, vous risquez de casser du code qui dépend d'eux.
C'est pire avec les constantes globales. Imaginez ce qui suit:
Et puis une fonction pour une image d'en-tête par défaut:
Cette fonction fait une hypothèse sur quelque chose qui est hors de son contrôle, elle en sait trop. Comment testez-vous cette fonction avec différentes valeurs pour la constante? Tu ne peux pas.
Supposons que vous souhaitiez tester ce qui se passe lorsque la constante est définie sur un répertoire inexistant ou sur un autre serveur plus lent. Mais une fois que vous avez défini la constante, vous ne pouvez pas modifier sa valeur. Vous ne pouvez pas exécuter tous les tests en une seule fois, ce qui rend les tests plus difficiles que nécessaire.
Et dans un thème enfant qui essaie d'utiliser sa propre image par défaut - comment implémentez-vous cela? La constante est définie par le thème parent. Vous pouvez ajouter un chèque avec
defined()
, mais cela rend plus difficile de voir où sa valeur a été réellement écrite.Il serait préférable de réécrire la fonction pour:
J'ai dit plus tôt, les constantes sont une API. Les API doivent être faciles à changer, mais il est vraiment difficile de déprécier une constante, car PHP ne consigne pas l'accès. Ainsi, votre message de dépréciation n'atteindra jamais les autres développeurs, sauf lorsqu'ils lisent très attentivement votre code source ou vos documents. Croyez-moi, ils ne le font pas.
À utiliser
get_stylesheet_directory_uri()
dans les thèmes enfants etget_template_directory_uri()
dans les thèmes parents. Les deux peuvent être filtrés lors de l'exécution, vous pouvez donc exécuter tous vos tests à la fois.la source