¿Cuál usar para ejecutar el código durante el guardado de una página de configuración del complemento?

4

Estoy escribiendo un complemento con una página de configuración / opción y quiero que se ejecute algún código php cada vez que alguien guarde la configuración en esa página y solo en esa página. ¿Qué acciones debo conectar para lograr esto?

    
pregunta Manny Fleurmond 07.01.2012 - 17:47

2 respuestas

3

Si está utilizando API de configuración , debe usar una devolución de llamada de desinfección:

register_setting( $option_group, $option_name, $sanitize_callback );

El mito es que el $sanitize_callback en realidad es un filtro para sus opciones cuando se guarda en la base de datos. Este es el lugar donde puedes hacer algo con tu código personalizado.

Este es el código de ejemplo:

register_setting( 'wpse38180', 'wpse38180', 'sanitize_wpse38180' );

function sanitize_wpse38180( $options )
{
    // Do anything you want

    return $options;
}
    
respondido por el Anh Tran 11.01.2012 - 17:52
1

Hay un filtro de actualización previa , que se aplica justo después del filtro de desinfección. Se llama pre_update_option_ optionname y toma los valores nuevos y antiguos de la opción como parámetros. Úsalo así:

register_setting( $my_option_group , $my_option_name );
// 10 is the filter priority, 2 is the number of arguments
add_filter( 'pre_update_option_' . $my_option_name , 'my_callback', 10, 2 );

function my_callback( $newvalue, $oldvalue ) {
    // $newvalue has already been sanitized, but not yet saved
    // do whatever you like here
    return 'filtered value';
}

El beneficio de usar esto es que la intención es más clara, y no tiene que obtener manualmente el valor de la opción anterior (si la necesita) ya que se transfirió por usted.

Este filtro es específico de un campo, por lo que si desea que se ejecute una vez al guardar las opciones, solo agréguelo a un solo campo.

    
respondido por el Bennett McElwee 13.06.2013 - 05:12

Lea otras preguntas en las etiquetas