Toda la documentación que he encontrado trata sobre la anulación de la función conectable a través de su complemento.
¿Qué pasa si estás desarrollando un tema en su lugar?
My functions.php requiere otro archivo que anule la get_user_by()
función, definida en pluggable.php
.
Si omito la if( function_exists() )
llamada, aparece el error "No se puede volver a declarar ...".
Si incluyo la if( function exists() )
llamada, no recibo ningún error, pero, por supuesto, mi función se ignora, ya que existe la versión conectable.
Según la impresionante publicación de Dominic en el pedido de inicio de WordPress , está claro que pluggable.php
se carga antes que el tema functions.php
y así sucesivamente, por lo que eso explica el error.
Entonces, la pregunta es: ¿cómo puede aprovechar esa agradable arquitectura enchufable desde un tema, sin recurrir a escribir complementos que luego se deben agrupar o instalar con el tema?
Notas adicionales : Parece que el argumento es que los temas no deberían estar tratando de hacer lo que hacen los complementos. Pero ese argumento tiene más de cuatro años (según el número de trac de 4 dígitos). Me encantaría saber de algunos grandes bateadores si esta filosofía aún se aplica, dada la compleja topología del panorama actual de desarrollo de temas. Me gustaría creer que hemos evolucionado desde entonces.
Contexto : estoy desarrollando una solución única de CMS para un cliente, con muchos metadatos personalizados, personalización del back-end de administración, el proceso de inicio de sesión / autenticación, el trabajo. Y, por supuesto, está el componente de diseño, ahí es donde entra la parte del tema. El hecho es que estos simplemente no son componentes reutilizables: nunca se aplicarán a otro cliente, nunca se colocarán bajo GPL y de código abierto, y son la mayoría ciertamente no se distribuirá / instalará en otras implementaciones de WordPress. En el mejor de los casos, hay algunas mejores prácticas que aprovecharé en futuros proyectos, pero eso será estrictamente un trabajo de referencia / copiar y pegar.
Esto no me parece un caso de uso de complementos. El tema está instalado, tal vez un tema secundario de Twenty Eleven, tal vez de forma independiente, sus funciones. Php invoca un montón de incluye, cada uno manejando un aspecto diferente del CMS en cuestión. Luego, los archivos de plantilla de tema usan 'etiquetas de plantilla' personalizadas que se definen en las inclusiones. No quiero que se activen archivos de tema con dependencias de algún complemento u otro, etc. Simplemente no tiene sentido crear complejidad en el sistema. Claro, puedo ponerlo en la carpeta de complementos de uso obligatorio, pero eso todavía se siente como un truco: en este momento, todo lo que tiene que ver con las personalizaciones realizadas para este proyecto está contenido wp-content/themes/my-theme/
. Tampoco quiero tener que considerar buscar cosas en algunas carpetas de complementos.
No me malinterpretes. Me encantan los complementos y los uso y los escribo. Y uso complementos junto con este tipo de desarrollo de temas altamente personalizado cuando el complemento es de un tercero y representa las mejores prácticas mucho más allá de lo que podría implementar en un plazo razonable. Pero cuando necesito modificar la funcionalidad principal para un escenario único, recurro a ganchos de acción, ganchos de filtro, y me gustaría poder confiar en funciones conectables para el lado del usuario y la autenticación también.