• Resuelto myanesp

    (@myanesp)


    Buenas a todos:

    Estoy creando, en local, un tema hijo del tema News Base. La pregunta que me surge es cómo modificar el código de archivos que no son ni style.css ni functions.php.

    Quiero que en la página principal no se muestren las categorías de las entradas de las secciones principales (trending news, carrousel fullwidth, etc). He copiado los archivos .php de cada uno de ellos a la carpeta de mi tema hijo, he eliminado la línea de código pero no se dejan de ver las categorías. Cuando he ido a hacerlo en el archivo original del tema padre, sí que se dejan de ver.

    He revisado los códigos, en el archivo hooks-init.php -donde se configuran los espacios a los que me refiero- de mi tema hijo (que lo copié del padre) cambié lo siguiente:

    /*sidebar init*/
    require get_stylesheet_directory() . '/trending-news.php';
    require get_template_directory() . '/inc/hooks/slider.php';
    require get_template_directory() . '/inc/hooks/related-post.php';
    require get_template_directory() . '/inc/hooks/fullwidth-slider.php';

    Pensaba que así, de esta forma, cogería el trending-news.php alojado en mi tema hijo y no en el padre, pero no ha funcionado. ¿Qué es lo que falla?

    Gracias de antemano.

    • Este debate fue modificado hace 3 años, 6 meses por myanesp. Razón: Error en el código
Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Moderador almendron

    (@almendron)

    El único error que veo es la ruta relativa. Debes replicar las estructura de archivos en el tema hijo y luego poner:

    require get_stylesheet_directory() . '/inc/hooks/trending-news.php';

    Iniciador del debate myanesp

    (@myanesp)

    Hola, @almendron, gracias por la rápida respuesta:

    Corregí eso también y nada:
    hooks

    Cuando lo edito directamente en el tema padre, es instantáneo, sin tocar una línea más. En el hijo, no pasa absolutamente ni modificando el hooks-init.php. Toqué más del hooks-init.php del hijo, y tengo la sensación que WordPress lee directamente el del padre obviando el del hijo, ¿es posible eso? No le veo otra explicación.

    Gracias de todas formas.

    Moderador almendron

    (@almendron)

    El problema puede estar en el archivo functions.php, línea 111:

    require get_template_directory() . '/inc/hooks/hooks-init.php';

    El problema es que en este caso el hijo no sustituye al padre sino que se complementa.
    Según el codex:

    The fact that a child theme’s functions.php is loaded first means that you can make the user functions of your theme pluggable —that is, replaceable by a child theme— by declaring them conditionally.

    Es decir, poner en el tema hijo:

    if(!function_exists('nombre_function_padre' ))
    {
          function nombre_function_padre()
          {
           //Lo que hace esta función
          }
    }

    En tu caso sería copiar en el functions.php del tema hijo las líneas comprendidas entre if (!function_exists('news_base_setup')) : (línea 11) y add_action('after_setup_theme', 'news_base_setup'); (línea 115), ambas inclusives.

    Y luego modificar la línea 111: require get_template_directory() . '/inc/hooks/hooks-init.php'; y cambiar get_template_directory() por get_stylesheet_directory()

    • Esta respuesta fue modificada hace 3 años, 6 meses por almendron.
    Iniciador del debate myanesp

    (@myanesp)

    Gracias, muchas gracias, lo he conseguido resolver.

    Un saludo.

    Moderador almendron

    (@almendron)

    De nada. Un saludo.

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