¿Qué, específicamente, se debe incluir en theme_name_setup ()?

4

He "heredado" el desarrollo de un tema antiguo que ahora estoy poniendo al día para el WP 3.9. El código del tema viene con un functions.php que tiene una función theme_name_setup () que se engancha en after_theme_setup. Hasta ahora tan bueno. Sin embargo, parece que casi todo lo que está debajo del sol se ha incluido en la función theme_name_setup (), y en todos los demás archivos de temas para las páginas de administración, plantillas de plantillas, funciones de estilo, encabezados personalizados, widgets, etc. require_once ) desde dentro de este theme_name_setup (), y por lo tanto todo está cargado, willy-nilly, en el gancho after_theme_setup.

He mirado otros temas (el 2012, -13, -14 y guiones bajos por defecto) que tienen una función más clara de ajuste de tema (), y sé lo suficiente como para saber que enganchar absolutamente todo, funciones dentro de funciones, en el el mismo gancho es un choque de trenes esperando a suceder (aunque el tema parece funcionar bien de esta manera por ahora). Tengo los ejemplos de los temas predeterminados para pasar, pero lo que quiero saber (y parece que no puedo encontrar a través de Google todopoderoso) es específicamente:

Más allá de add_theme_support (), las consideraciones de dominio de texto / localización, register_nav_menus () y el soporte de miniaturas, ¿qué debería incluir específicamente en la función theme_name_setup (), enganchada como se describe anteriormente? (Y, por extensión, todo lo demás debe definirse / engancharse en otra parte).

    
pregunta Caspar 09.07.2014 - 13:14

1 respuesta

5

Nada. Una función theme_name_setup() ni siquiera debería existir.

  1. El nombre es demasiado vago. ¿Qué significa configuración ? Esta es también la raíz de su pregunta, porque tal nombre no nos dice nada acerca de lo que hace la función. Podría ser cualquier cosa o nada en absoluto. Técnicamente, los temas ni siquiera necesitan un functions.php . Pero funcionan, la configuración se realiza mediante WordPress.

  2. Viola el principio de responsabilidad única . Este término proviene del objeto Programación orientada, pero la idea se aplica a todo buen código, incluso es el núcleo de la filosofía de UNIX : Haz una cosa y hazlo bien.
    Esto nos lleva al siguiente problema.

  3. Afecta la interoperabilidad. Considere la siguiente función:

    add_action( 'after_setup_theme', 'theme_name_setup' );
    
    function theme_name_setup() {
        require 'widgets.php';
        require 'comment-enhancements.php';
        require 'javascript.php';
    }
    

    ¿Qué debo hacer para cargar solo widgets.php y javascript.php en el tema de mi hijo? Tengo que desconectar la función general y repetir partes de su código. Y luego, le ruego que nunca cambie el nombre, combine o divida archivos en una actualización de su tema principal.

Para expresar esto de una manera más positiva:

  • Asigne a cada clase y función un nombre que le diga al lector lo que hace. Si no puede encontrar un nombre bueno y preciso, es probable que este código sea demasiado.

  • Puede usar el mismo enlace con múltiples devoluciones de llamada. Este es el punto de la acción / filtro API. Úsalo.

  • Intente que cada función devuelva un valor útil, para que pueda probarlo y depurarlo por separado. load_theme_textdomain() , por ejemplo, devuelve TRUE cuando se encontró un archivo, FALSE de lo contrario. Si está utilizando una función separada para cargar la traducción, puede usar ese valor de retorno.

respondido por el fuxia 16.07.2014 - 01:07

Lea otras preguntas en las etiquetas