Sustitución de la acción principal del tema Custormizr

3 minutos de lectura

avatar de usuario
c3cris

Creé mi propio tema hijo. Todo funciona muy bien, excepto que parece que no puedo cancelar el registro de un anzuelo.

$esta es la clase TC_footer_main y el siguiente código está en el __construct

add_action ( '__colophon'       , array( $this , 'tc_colophon_center_block' ), 20 );

Intenté varias acciones de eliminación sin éxito. Solo estoy tratando de cambiar/eliminar el pie de página:

remove_action( '__colophon' , 'tc_colophon_center_block' , 55);

o

remove_action( '__colophon' , array('TC_footer_main','tc_colophon_center_block') , 55);

yo también he intentado

remove_action( '__colophon' , TC_footer_main::$instance->tc_colophon_center_block() , 55);

Pero eso arrojó un error como TC_footer_main no estaba cargado en el momento en que mi functions.php el archivo corrió.

Solo estoy tratando de cambiar/eliminar el pie de página:

Creo que lo estás haciendo mucho más complejo, para modificar la salida del tc_colophon_center_block() método, de lo que tiene que ser.

solo usa el tc_credits_display filtrar:

add_filter( 'tc_credits_display', function( $html )
{
    // Modify output to your needs!
    return $html;
} );

para modificar ese bloque a sus necesidades.

Para eliminar totalmente la salida (si está permitido), simplemente use:

add_filter( 'tc_credits_display', '__return_null', PHP_INT_MAX );

Tiene más acceso a filtros como:

  • tc_copyright_link
  • tc_credit_link
  • tc_wp_powered

Para escoger de.

¡Eso es todo!

  • pd: no soy un afiliado, pero parece que la versión pro le brinda la posibilidad de modificar el pie de página directamente a través de la configuración del Personalizador.

    – birgire

    4 de febrero de 2016 a las 18:01


  • Gracias, puedo cambiar el encabezado yo mismo, pero quería las mejores prácticas para hacerlo. Y no codificando en el tema principal

    – c3cris

    08/02/2016 a las 22:30

Para su propósito, agregue el siguiente código en function.php. Recibirá una llamada en el gancho after_setup_theme.

// replace parent function
function child_theme_function () {
    // your code goes here
 }

function my_theme_setup () {
    remove_action( '__colophon', 'tc_colophon_center_block', 1000 );
    add_action( '__colophon', 'child_theme_function', 1000 );
}
add_action( 'after_setup_theme', 'my_theme_setup' );

También puede intentar anular la clase principal de la clase secundaria como se describe aquí: https://thethemefoundry.com/tutorials/advanced-customization-replaceing-theme-functions/

  • Tu solución solo me llevó a la mitad del camino. Pude mostrar mi pie de página pero no eliminar el anterior. Eso es porque está dentro de una clase. TC_footer_main

    – c3cris

    3 de febrero de 2016 a las 22:06

  • Para eliminar el anterior, puede usar: Para obtener más referencias, consulte: benpearson.com.au/…

    – Experto en PHP

    8 de febrero de 2016 a las 11:04

no estaba demasiado lejos… un problema que puede tener es que está tratando de eliminar el enlace antes de que el tema principal lo haya agregado… la clase podría inicializarse en una etapa posterior…

No estoy muy seguro de cuándo se ejecuta el enlace, pero espero que sea después de init.

 add_action('init', 'remove_parent_hook');

 function remove_parent_hook(){
      remove_action( '__colophon' , array('TC_footer_main','tc_colophon_center_block') , 20); // needs to be the same priority
 }

obviamente, ahora puede simplemente agregar una acción para su nueva función.

Existe la posibilidad de que se haya agregado una función anónima, a menudo la importancia de &$this se pasa por alto cuando se intenta eliminar una función enganchada. Esto es una molestia porque wp asignará una cadena aleatoria como el nombre de la clave y el nombre de la función para la función, es diferente cada vez, por lo que no se puede adivinar. Pero podemos buscar el nombre de la función dentro de la clave para que algo como esto funcione

    function remove_anon_hk($hook, $function, $priority=10 ){

        global $wp_filter;

        $hooks= $wp_filter[$hook][$priority];

        if(empty ($hooks))
            return;

        foreach($hooks as $hk=>$data):
            if(stripos($hk, $function) !== false ){
                unset($wp_filter[$hook][$priority][$hk]);
            }
        endforeach;
    }


    add_action('init', function(){
        remove_anon_hk('__colophon', 'tc_colophon_center_block');
    });

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad