Soporte » WordPress Avanzado » añadir funciones tema hijo

  • Resuelto isabelgalvez

    (@isabelgalvez)


    Hola,
    estoy haciendo un tema hijo de una página que llevo construyendo unos meses, así que hay archivos php cambiados.

    Ya tengo mi tema hijo, y no ha habido problema, ni en los estilos ni en los arvhivos php: el header.php (que había personalizado) lo he colocado en mi carpeta y todo funciona bien.
    El problema es que tengo dos archivos functions.php en mi tema. Uno está nada más entrar en el tema, y otro está metido en una carpeta llamada luvthemes que está dentro de la carpeta del tema. En este último functions.php personalicé algunas funciones (como la que pinta el top_bar por ejemplo).

    Creía que lo que tendría que hacer era copiar en mi tema hijo un directorio llamado luvthemes y dentro del directorio pegar el archivo functions con las funciones personalizadas, pero no me funciona.

    Alguien sabe cómo podría hacer para solucionarlo?

    Muchas gracias!!

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Moderador almendron

    (@almendron)

    Debes tener en cuenta que, a diferencia por ejemplo del style.css, functions.php de un tema hijo no sobrescribe al tema padre sino que se añade al existente. Eso sí, se carga antes que el padre.

    Si modificas una función ya existente, no consigues nada porque primero se cargaría la modificada (tema hijo) y luego la del padre (la original).

    https://codex.wordpress.org/Child_Themes#Using_functions.php

    Hola!
    sí, lo que pasa que tenía entendido que si sustituías la función de la siguiente manera:

    if ( ! function_exists ( 'my_function' ) ) {
    function my_function() {
    // Aquí el contenido.
    }
    }

    la hacías «enchufable» y de esta manera no se ejecutaba en el tema padre.
    https://angeljulian.com/sobreescribir-funciones-tema-hijo/ aquí por ejemplo habla de esto.

    A parte de eso, tengo la duda de si está bien, por ejemplo si quieres sobreescribir un archivo llamado x.php que está en una carpeta llamada y, tienes que crear en tu tema hijo una carpeta que se llama y con un archivo llamado x.php?

    Gracias!

    Moderador LGrusin

    (@lgrusin)

    Si la función del tema padre no incluye lo del:
    if ( ! function_exists ( 'my_function' ) )
    difícilmente podrás sobreescribirla porque no es pluggable (enchufable).

    Hay situaciones en las que es complicado, o imposible, sobreescribir las funciones del tema padre. En ese caso, crea un tema partiendo del que tienes con tus propias modificaciones.

    De todas formas quizás este artículo te aclare algo:
    https://code.tutsplus.com/tutorials/a-guide-to-overriding-parent-theme-functions-in-your-child-theme–cms-22623

    Un saludo

    Gracias por tu respuesta!!

    y otra pregunta: estoy pensando migrar mi web a otro plugin multiidioma. Es mejor pasarla al tema hijo antes o después de esto¿

    Moderador almendron

    (@almendron)

    @isabelgalvez: abre otro hilo y haz allí la última pregunta que has formulado (y explica un poco más).

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘añadir funciones tema hijo’ está cerrado a nuevas respuestas.