• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Must Comunicación

Diseño Web y Marketing Online

  • Temas WordPress
  • Plugins WordPress
  • WooCommerce
  • Marketing
  • Tutoriales
    • WooCommerce
    • Easy Digital Downloads
  • Contacto
Usted está aquí: Inicio / WordPress / Desarrollo Web / Una guía para sobreescribir funciones de los temas padres en nuestro tema hijo

Una guía para sobreescribir funciones de los temas padres en nuestro tema hijo

Desarrollo Web WordPress Deja un comentario

Compartir
Compartir
Twittear
Pocket
WhatsApp
Email

Si tienes alguna experiencia trabajando con temas padre y temas hijo, más conocidos como “child themes” en WordPress, ya sabrás que los archivos de plantilla de tu tema hijo sobreescriben a sus homólogos en el tema padre. De manera que, por ejemplo, si tu tema padre tiene un archivo page.php y creas uno nuevo en tu tema hijo, WordPress usará éste último cuando muestre las páginas.

Podrías pensar que pasa lo mismo con las funciones: crea una nueva función en tu archivo functions.phpcon el mismo nombre que la que la perteneciente al tema padre, de manera que tome preferencia. Por desgracia, no es tan simple como esto.

En este tutorial te mostraré los tres métodos que puedes usar para sobrescribir funciones de un tema padre en tu tema hijo:

  • Funciones conectables/insertables.
  • Prioridad de la función.
  • Eliminar funciones del hook al que están conectadas.

Cómo funcionan las funciones en el tema padre e hijo

Antes de examinar los métodos para sobreescribir las funciones de tu tema hijo, es útil entender cómo funcionan las funciones en los temas padre e hijo.

Primero, tienes que saber que todas las funciones de tu tema padre se ejecutarán cuando estés usando un tema hijo. No tienes que añadir nada en el archivo de las funciones de tu tema hijo para que esto ocurra. Es distinto a CSS, en donde tienes que incluir manualmente la hoja de estilo de tu tema padre en la de tu tema hijo para que incluya sus estilos.

Las funciones de tu tema hijo se cargarán antes de que se carguen las del tema padre. Esto significa que si tu tanto tu tema padre como tu tema hijo tienen funciones llamadas my_function() que realizan un trabajo similar, la del tema padre se ejecutará en último lugar, por tanto sobreescribirá la del tema hijo.

Sin embargo, puedes cambiar el orden en el que se desencadenan las funciones, e incluso puedes evitar que lo hagan como veremos en breve.

Funciones insertables

Las funciones conectables son algo que tu creas con código en tu tema padre de manera que no tendrán ninguna utilidad para ti si estás trabajando con un tema padre que no las tiene.

Pero si estás escribiendo tu propio tema padre, quizá como punto de inicio para proyectos futuros, o si estás creando tu propio framework, hacer que tus funciones sean insertables o “pluggable” para que puedas posteriormente sobrescribirlas en tu tema hijo es una práctica buena y aconsejable. También es buena idea echar un vistazo a las funciones de tu tema padre que estés usando, ya que muchas de ellas, incluyendo el tema predeterminado de WordPress, tendrán funciones conectables.

Para escribir funciones conectables, simplemente enciérralas entre etiquetas condicionales para comprobar si ya se está ejecutando otra función con ese nombre:

Insertar una función en WordPress
PHP
1
2
3
4
5
6
7
<?php
if ( ! function_exists ( 'my_function' ) ) {
    function my_function() {
        // Contents of your function here.
    }
}
?>


Si encierras las funciones en tu tema padre dentro de etiquetas condicionales, WordPress comprobará si existe una función con el mismo nombre en tu tema hijo que ya haya sido ejecutada, y si es así, no ejecutará la función del tema padre.

Después, cuando vayas a escribir una función en tu tema hijo que quieras que sobreescriba su correspondiente en el tema padre, simplemente tendrás que asignarle el mismo nombre que tiene la función del tema padre:

PHP
1
2
3
4
5
<?php
function my_function() {
    // Contents for your function override here.
}
?>


WordPress ejecutará primero la función del tema hijo, y en lo que respecta a su homóloga en el tema hijo, comprobará si existe y en ese caso, no la ejecutará.

Prioridad de la función

Si no estás usando tu propio tema padre, o si estás usando uno creado por terceros que no incluye funciones conectables, puedes usar otro método.

Cuando creas funciones puedes asignarles una prioridad, esto le indicará a WordPress cuando debe ejecutarlas. Haces esto mismo cuando añades tu función al hook de una acción o filtro. Entonces WordPress ejecutará la función conectada a un hook dado en orden ascendente de prioridad, de manera que aquellas que tengan una cifra de valor más alto se ejecutará en último lugar.

Imagina que la función del tema padre no es conectable y que tiene el siguiente aspecto:

PHP
1
2
3
4
5
6
<?php
function parent_function() {
    // Contents for your function here.
}
add_action( 'init', 'parent_function' );
?>


 

Esta función está conectada al hook init y no se le ha asignado ninguna prioridad. Por defecto WordPress asigna una prioridad 10 a las funciones a las que no se les ha asignado ninguna, por tanto, para disparar tu función después tendrás que usar un valor superior a 10. Yo suelo usar 15, así tengo cierto margen en caso de que quiera añadir posteriormente otra función entre ambas.

Esto significa que la función de tu tema hijo tendrá ahora el siguiente aspecto:

PHP
1
2
3
4
5
6
<?php
function child_function() {
    // Contents for your function here.
}
add_action( 'init', 'child_function', 15 );
?>


Igualmente, la función de tu tema padre podría tener una prioridad asignada:

PHP
1
2
3
4
5
6
<?php
function parent_function() {
    // Contents for your function here.
}
add_action( 'init', 'parent_function', 20 );
?>


Así que sólo tienes que asegurarte de que la prioridad que das a la función en tu tema hijo es superior:

PHP
1
2
3
4
5
6
<?php
function child_function() {
    // Contents for your function here.
}
add_action( 'init', 'child_function', 25 );
?>

Lo que te queda por leer:

  • Eliminar las funciones de los hooks

    • Una Nota sobre las Prioridades

seguir leyendo en Tuts+

Entradas relacionadas

Compartir
Compartir
Twittear
Pocket
WhatsApp
Email

categorías: Desarrollo Web, WordPress

anterior
siguiente

Acerca de Eva Collados Pascual

Apasionada de la sociedad de la información, el marketing online, la tecnología, el diseño y el arte.
Sigo a diario todas las noticias relacionadas con WordPress, si no encuentras en el blog la solución que buscabas, no dudes en consultarme.

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la Política de privacidad

Barra lateral principal

Categorías

  • Apps – Productividad
  • Artículos Tuts+
  • Diseño Web
  • eCommerce
  • Email Marketing
  • Emprendimiento
  • Marketing
  • SEO
  • Temas Shopify
  • Temas WordPress
  • Tutoriales
    • Tutorial de Easy Digital Downloads
    • Tutorial de WooCommerce
    • Tutorial W3 Total Cache
  • WooCommerce
  • WordPress
    • Desarrollo Web
    • Optimización
    • Plugins
    • Seguridad
    • Temas WordPress

Etiquetas

caché Conversión CRO Inspiración Web Landing Pages newsletters Performance Optimization PHP Plugins WooCommerce Plugins WordPress Seguridad SEO Startups Temas WooCommerce Temas WordPress Tutoriales Tuts+ Vídeo WooCommerce WordPress WPO

Copyright Must Comunicación© 2025 Genesis Framework

Este sitio web usa cookies propias y de terceros para recordar tus datos de inicio de sesión y recopilar estadísticas para mejorar la experiencia del usuario. Más información sobre las cookies Leer más. Aceptar x
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR