Quiero modificar una función en un complemento. Se declara en el archivo principal del complemento de esta manera:
class WCPGSK_Main {
...
public function wcpgsk_email_after_order_table($order) {
...
}
}
Agregue llamado desde allí así:
add_action( 'woocommerce_email_after_order_table', array($this, 'wcpgsk_email_after_order_table') );
Supongo que sería posible reemplazarlo si tuviera acceso a la clase en functions.php. Entonces podría escribir algo como esto:
$wcpgsk = new WCPGSK_Main;
remove_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'wcpgsk_email_after_order_table') );
function customized_wcpgsk_email_after_order_table($order) {
...
}
add_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'customized_wcpgsk_email_after_order_table') );
Mi pensamiento para obtener acceso a la clase en el archivo functions.php era incluir el archivo donde se declara la clase en functions.php:
require_once('/wp-content/plugins/woocommerce-poor-guys-swiss-knife/woocommerce-poor-guys-swiss-knife.php');
$wcpgsk = new WCPGSK_Main;
...
Pero esto no funciona porque el archivo del complemento se incluye cuando el complemento se inicializa en WordPress, supongo.
¿Hay alguna manera de reescribir la función sin tocar los archivos del complemento?
Si su complemento está registrado así:
Entonces debería poder eliminar el filtro accediendo a la global:
De lo contrario, deberá rastrear la
$wp_filter
global
clave de registro:Esto requiere muchos recursos y realmente no debe hacerse a menos que no tenga otra opción.
fuente
Ese complemento hace que su función de inicio sea
wcpgsk_init()
conectable, por lo que otra forma de anularlo es definirla primero en un complemento de uso obligatorio (ya que es demasiado tarde en las "funciones.php" de su tema). Por lo tanto, puede poner su anulación en "wp-content / mu-plugins / functions.php":Pero una forma aún mejor de anularlo es instalarlo
runkit
( https://github.com/padraic/runkit ) y luego reemplazarlo directamente en las "funciones.php" de su tema:(Eso es una broma, por cierto)
fuente