Volver a declarar una función en un tema secundario

3

Quiero volver a declarar una función que heredé del tema principal.

Cuando lo hago en functions.php, recibo un error fatal de que no es posible volver a declarar.

Hice una solución alternativa: crear un nombre de función modificado y copiar todos los archivos de plantilla, index.php, etc. en el directorio del tema secundario y volver a escribir las llamadas de función. Así que ahora se llama la nueva función.

Esto funciona, pero ignora las actualizaciones que tendría el tema principal.

¿Hay una solución mejor para esto?

    
pregunta Gergely 24.05.2014 - 11:02

2 respuestas

8

La redeclaración de una función en un tema secundario solo funciona cuando la función de los temas principales está envuelta en un

 if( !function_exists( 'function_name' )):
condición

Luego, simplemente puede copiar la función completa al tema secundario y hacer las modificaciones que necesite hacer.

Si las funciones de los temas principales no están envueltas en esa declaración condicional if , y si no se suministran filtros o enlaces en la función, será mejor que copie la función a su tema secundario, cambie el nombre de esa función. haga sus modificaciones y luego actualice los archivos de su plantilla para reflejar la nueva función.

    
respondido por el Pieter Goosen 24.05.2014 - 11:14
2

Primero puedes eliminar la función con

remove_filter( 'hook', 'function_name' );

y luego vuelva a agregar la función con el nuevo nombre y el mismo enlace.

Por ejemplo

    function remove_content_filter() {

       remove_filter( 'the_content', 'function_name' );

    }

    add_action( 'after_setup_theme', 'remove_content_filter' );

    function new_function_name( $output ) {
        //some code here
        return $output;
    }

    add_filter( 'the_content', 'new_function_name' );
    
respondido por el user3635808 24.05.2014 - 12:22

Lea otras preguntas en las etiquetas