cómo hacer que un tema secundario reemplace las funciones en diferentes archivos php que se cargan a través de require_once

2

Estoy trabajando en un tema secundario para la plantilla de "noticias".

mi problema es que hay algunas funciones en el tema principal que están definidas en diferentes archivos php. estos archivos se llaman en functions.php con require_once.

Creo que entiendo cómo descargar funciones y definir mis propias funciones, pero ¿cómo dirijo la llamada a require_once a mi nuevo archivo en la ruta del tema secundario?

saludos,

troy

    
pregunta troy 16.10.2011 - 04:33

2 respuestas

4

El archivo functions.php en temas secundarios se ejecuta antes de las funciones.php del tema principal. Hay un algunos detalles más en el códice .

Si el tema principal sigue los estándares de desarrollo, cada una de sus funciones personalizadas debería funcionar así:

if( !function_exists( 'a_parent_theme_function' ) ) {
    function a_parent_theme_function() {
        \ do stuff
    }
}

Luego, simplemente escribe tu propio a_parent_theme_function() y tiene prioridad porque se define primero. Sin embargo, yo diría que la mayoría de los temas se construyen con poca consideración hacia la temática de los padres, por lo que no se puede anular la función principal, que es un gran problema.

Si está utilizando un marco con sus propios ganchos, podría usar la acción de eliminación como esta persona hizo para deshacer la funcionalidad que no desea y enganchar en otro lugar para agregar lo que desea, pero eso se siente mal. Tal vez incluso podría enganchar el mismo gancho con una prioridad más baja, deshacer el resultado de la función y rehacer lo que desea. Sin embargo, una vez más, eso dista mucho de ser ideal.

Esta pregunta es similar a esta pregunta anterior sobre stackoverflow que no funciona bien. PHP no proporciona una manera fácil de sobrecargar o anular una función existente sin algo como la verificación function_exists() mencionada anteriormente.

    
respondido por el mrwweb 02.05.2012 - 18:13
0

Simplemente piense en require_once como un método para organizar sus funciones. Al final todo está ubicado en functions.php. En otras palabras, simplemente puede reemplazar las funciones.php con las funciones que desee. Si desea cargar archivos desde su tema principal, simplemente hágalo

require_once( get_bloginfo('template_directory').'includes_folder/something.php');

Espero que ayude

    
respondido por el chifliiiii 16.10.2011 - 05:23

Lea otras preguntas en las etiquetas