Jos sinulla on mukautettu metalaatikko tai käytät mukautettuja metatietoja jälkitasolla, saatat törmätä ongelmaan, jossa tiedot poistetaan vahingossa, kun tallennat niitä joukkomuokkausnäytöstä.
Ongelman kokoonpano on suunnilleen tällainen:
- sinulla on kokoelma viestejä, joita on muutettava,
- lataat kaikki viestit joukkomuokkausnäytössä (kuten yllä näkyy),
- käytät muutosta.
Kun tämä tapahtuu, muutos tapahtuu, mutta se poistaa mahdolliset mukautetut viestien metatiedot.
Tämä on vain pieni koodiesimerkki siitä, miltä tallennusmenetelmä näyttää mukautetuille metatiedoille (eli jätän pois useita suojalausekkeita):
<?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 );
}
Ongelma tässä on se, että ei voida tarkistaa, että tämä tulee joukkomuokkausnäytöstä. Ja sen vuoksi metatiedot voidaan poistaa kokonaan.
Tämän käsittelemiseksi meidän on tarkistettava, tuleeko serialisointi joukkomuokkausnäytöstä. Tällä tavalla voimme palata aikaisin ja estää koodin suorittamisen. Yksinkertaisimmassa muodossaan voit tehdä jotain näin :
<?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 );
}
Huomaa, että en suosittele tämän sanan käyttöä yleisissä tapauksissa tai yleiseen käyttöön, koska se on aggressiivinen. Sen sijaan mielestäni kannattaa lukea tämä Codex -artikkeli, jotta saat lisätietoja siitä, kuinka upotettu muokkaus toimii sekä palvelin- että asiakaspuolella.
Viestin tarkoituksena on näyttää, kuinka mukautettuja metatietoja voidaan poistaa vahingossa, ja luoda perusta sille, kuinka voit estää sen.