¿Cómo puedo modificarla varios botones de envío en la página del plugin opción?

Estoy desarrollando mi primer plugin para WordPress y me estoy poniendo un asimiento del sistema entero de gancho. Ahora estoy en un problema (probablemente) pequeño, que posiblemente podía eludir, pero tengo miedo de salir con un 'hack', más que una solución real. Lo que estoy tratando de hacer es poner dos someter los botones de mi página de opciones: guardar proyecto tanto de ellos tendría que hacer algo común (es decir, salvando el contenido de la forma), pero luego deben tener diferentes medidas con tal contenido.

Hasta ahora, me las arreglé para salida de los dos botones utilizando el siguiente código:
echo '<form id="my_plugin_settings_form" method="post" action="options.php">';
settings_fields('my_plugin_settings');
do_settings_sections('my_plugin_settings');
submit_button(__('Save', 'MyPlugin'), 'Save');
submit_button(__('Draft', 'MyPlugin'), 'secondary','Draft');
echo '</form>';
También implementé un método validate, que recibe correctamente los campos publicados:
public function validate_settings($settings) {
  var_dump($settings); // Here I can see all posted fields
}
Las obras mencionadas así, con todos los datos se guarden correctamente en el cuadro opciones de WordPress. Sin embargo, me gustaría 'interceptar' los datos están guardados para manipularla.

Estaba pensando en manipular los datos dentro de la
validate_settings()
método, pero se hizo clic en el botón no está incluido en la configuración del pasado como argumento. Yo simplemente podría analizar el
$_POST
array para conseguirlo, pero tengo la duda de que el enfoque es un poco de un hack y que, quizás, debería implementar un gancho adecuado, en otro lugar.

Mi pregunta, por lo tanto, es: ¿Dónde pongo mi código para procesar los datos escritos desde una página de opciones. ¿Hay un gancho específico que debo usar? Gracias de antemano por las respuestas..



Solución

La API de configuración es una mierda. Necesito un largo tiempo y necesitan probar muchas hasta tengo este trabajo. Mi problema era que los valores de mis entradas nunca fue pasado a la devolución de llamada de validación.

Terminé en el método de matriz:
<input type="text" name="foo[bar]" value="baz" />
Si el formulario será enviado, en la
$_POST
o
$_GET
Arsenal es un campo llamado
foo
que contiene una matriz con todos los valores. ¿Puedo acceder al valor con e.g.

$_POST['foo']['bar']
Si tuviera que trabajar con la API de configuración, usar el segundo parámetro fomr
register_setting()
(nombre de la opción) como clave para mis campos de entrada.
global $option_name;
$option_group = 'The_Option_Group';
$option_name = 'The_Option_Name';
register_setting( $option_group, $option_name );
[...]

function field_callback() {
  global $option_name;
  echo "<input type='text' name='{$option_name}[bar]' value='baz' />";
  echo "<input type='submit' name='{$option_name}[submit]' value='Send' />"
}
De esta manera a que puedo acceder todos los valores dentro del formulario en la opción validar \
function option_validate( $input ) {
  $bar = $input['bar'];
  $sub = $input['submit'];

  return $input;
}
Mejor se explica en el artículo Settings API Explained en PressCoders.





Problemas relacionados

No puede deshacerse de la opción 'Envío gratis' en la página del carrito en Woocommerce

Varios botones sociales con una carga rápida.

Desconexión del envío en el comercio electrónico WP

WooCommerce siempre incluyen información de comprobación del envío

¡ Envíos gratis en comercio Woo por elementos específicos que permite

¿Es posible fijar precios envío individuales en Woocommerce?

WooCommerce: Mostrar opciones de envío en la página de producto

Facebook 'Compartir' y 'Me gusta' en posts individuales

WordPress Drag n Drop Uploader fila solamente

Cómo imprimir un productos clase de envío en la página en WooCommerce

Coste de envío WooCommerce Mostrar en la página de producto

WP e comercio deshabilitar envío gratis en ciertos países

Source: Stack Exchange Inc; License: cc by-sa 3.0 Contacto / Contact