Sugerencia rápida: metadatos y edición en línea
Si tiene un cuadro de metadatos personalizado o está trabajando con metadatos personalizados en el nivel posterior, entonces puede encontrar un problema con la eliminación accidental de datos al guardarlos desde la pantalla de edición masiva .
La configuración para el problema es algo como esto:
- tienes una colección de publicaciones que necesitan ser cambiadas,
- carga todas las publicaciones en la pantalla de edición masiva (como se muestra arriba),
- aplicas un cambio.
Una vez que esto sucede, se produce el cambio, pero borra cualquier metadato de publicación personalizada que pueda tener.
Esta es solo una pequeña muestra de código de cómo se ve el método de guardar para sus metadatos personalizados (es decir, estoy omitiendo una serie de cláusulas de protección):
<?php
/**
* Save the options in the meta box.
*
* @since 1.0.0
*
* @param int $post_id The ID of the current post
*/
public function save( $post_id) {
// Note: Guard clauses removed for readability.
// Assume $metadata is set earlier in this function.
update_post_meta( $post_id, 'acme-custom-meta-data', $metadata );
}
El problema con esto es que no hay verificación de que esto provenga de la pantalla de edición masiva . Y debido a eso, los metadatos se pueden eliminar por completo.
Para manejar esto, debemos verificar si la serialización proviene de la pantalla de edición masiva . De esa manera, podemos regresar antes y evitar que se ejecute el código. En su forma más simple, puedes hacer algo como esto :
<?php
/**
* Save the options in the meta box. Ignore the action if it's coming from the
* Bulk Edit screen.
*
* @since 1.0.0
*
* @param int $post_id The ID of the current post
*/
public function save( $post_id) {
// Note: Guard clauses removed for readability.
// Assume $metadata is set earlier in this function.
if (isset( $_POST['_inline_edit'])) {
return;
}
update_post_meta( $post_id, 'acme-custom-meta-data', $metadata );
}
Tenga en cuenta que no recomiendo usar este textualmente para casos universales o para uso universal, ya que es agresivo. En cambio, creo que vale la pena leer este artículo del Codex para obtener más información sobre cómo funciona la edición en línea tanto del lado del servidor como del lado del cliente.
El propósito de la publicación es mostrar cómo los metadatos personalizados se pueden eliminar sin querer y sentar las bases básicas para evitarlo.