Toda la documentación que he encontrado trata sobre el reemplazo de la función de conexión a través de su complemento.
¿Qué pasa si estás haciendo desarrollo de temas?
Mis funciones.php requieren otro archivo que anule la función get_user_by()
, definida en pluggable.php
.
Si omito la llamada if( function_exists() )
, aparece el error "No se puede volver a declarar ...".
Si incluyo la llamada if( function exists() )
, no obtengo ningún error, pero, por supuesto, mi función se ignora, ya que existe la versión conectable.
Basado en la impresionante publicación de Dominic en el orden de inicio de WordPress , está claro que pluggable.php
es cargado antes de functions.php
de tu tema, etc., de modo que eso explica el error.
Entonces, la pregunta es: ¿cómo puedes aprovechar esa bonita arquitectura conectable desde dentro de un tema, sin recurrir a la escritura de complementos que luego se deben agrupar o instalar con el tema?
Notas adicionales : Parece que el argumento es que los temas no deben tratar 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 bateadores pesados si esta filosofía todavía se aplica, dada la compleja topología del panorama de desarrollo de temas de hoy. Me gustaría creer que hemos evolucionado desde entonces.
Contexto : estoy desarrollando una solución CMS única para un cliente, con una gran cantidad de metadatos personalizados, personalización del administrador de back-end, el proceso de inicio de sesión / autenticación, el trabajo. Y, por supuesto, está el componente de diseño, que es donde entra en juego la parte del tema. El hecho es que estos son simplemente no componentes reutilizables: nunca se aplicarán a otro cliente, nunca se pondrán bajo la GPL y de código abierto, y seguramente no se distribuirán / instalarán en otras implementaciones de WordPress. En el mejor de los casos, hay algunas prácticas recomendadas que utilizaré en futuros proyectos, pero eso será estrictamente un trabajo de referencia / copiar y pegar.
Esto no suena como un caso de uso para los complementos para mí. El tema está instalado, tal vez un tema secundario de Twenty Eleven, tal vez uno independiente, sus funciones. Php llama en un barco cargado de envíos, cada uno de los cuales trata un aspecto diferente del CMS en cuestión. Luego, los archivos de plantillas de tema usan 'etiquetas de plantilla' personalizadas que se definen en las inclusiones. No quiero tener archivos de temas con dependencias de algún complemento u otro que esté activado, 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. Ahora mismo, todo que tiene que ver con las personalizaciones hechas para este proyecto está contenido en wp-content/themes/my-theme/
. Tampoco quiero tener que considerar buscar cosas en las carpetas de algunos complementos.
No me malinterpretes. Me encantan los plugins y los uso y los escribo. Y sí uso complementos junto con este tipo de desarrollo de tema altamente personalizado cuando el complemento es de terceros y representa las mejores prácticas más allá de lo que posiblemente podría implementar en un plazo razonable. Pero cuando necesito modificar la funcionalidad central para un escenario único, recurro a los ganchos de acción, a los ganchos de filtro, y me gustaría poder confiar en funciones conectables para el usuario y también en el lado de la autenticación de las cosas.