Estoy en un lío. Sé que esta es una pregunta tonta. Ves que la ruta del tema no es tan buena. ¿Hay alguna otra manera? ¿Cómo puedo usarla get_template_directory()
aquí?
// 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
fuente
fuente
Respuestas:
No use constantes para eso. No use constantes globales en absoluto.
Hay dos tipos de constantes: constantes de clase / interfaz y constantes globales.
Las constantes en clases o interfaces están bien y a veces son útiles. Un ejemplo demasiado simplista:
Pero tenga en cuenta que estas constantes son siempre públicas. Si los cambia más tarde, puede romper el código que depende de ellos.
Esto es peor con las constantes globales. Imagina lo siguiente:
Y luego una función para una imagen de encabezado predeterminada:
Esta función asume algo que está fuera de su control, sabe demasiado. ¿Cómo se prueba esa función con diferentes valores para la constante? No puedes
Supongamos que desea probar qué sucede cuando la constante se establece en un directorio no existente o en otro servidor más lento. Pero una vez que ha definido la constante, no puede cambiar su valor. No puede ejecutar todas las pruebas de una vez, esto hace que las pruebas sean más difíciles de lo necesario.
Y en un tema secundario que intenta usar su propia imagen predeterminada, ¿cómo implementa eso? La constante se establece por el tema principal. Puede agregar un cheque con
defined()
, pero eso hace que sea más difícil ver dónde se escribió realmente su valor.Sería mucho mejor reescribir la función para:
Dije antes, las constantes son una API. Las API deberían ser fáciles de cambiar, pero es realmente difícil desaprobar una constante, porque PHP no registra el acceso. Por lo tanto, su mensaje de desaprobación nunca llegará a otros desarrolladores, excepto cuando lean su código fuente o sus documentos con mucho cuidado. Confía en mí, no lo hacen.
Uso
get_stylesheet_directory_uri()
en temas secundarios yget_template_directory_uri()
en temas principales. Ambos se pueden filtrar en tiempo de ejecución, por lo que puede ejecutar todas sus pruebas a la vez.fuente