WordPress-koukun käyttäminen päivitysvaihtoehtoihin
Vaihtoehtojen päivittäminen WordPress-järjestelmänvalvojassa on yksinkertaista, eikö? Sinun tulee täyttää tekstikenttä, valita valintaruutu tai vaihtaa valintanappi ja napsauttaa sitten Tallenna.
Mutta oletetaan, että sinun on asetettava laukeava koukku, joka päivittää myös toissijaisen, liittyvän vaihtoehdon aina, kun se vaihdetaan.
Jos esimerkiksi annetaan valintaruudun edustama vaihtoehto, oletetaan, että haluat asettaa vaihtoehdon tietokantaan aina, kun valintaruutua ei ole valittu, ja sitten poistaa sen aina, kun kyseinen vaihtoehto on asetettu.
Tätä varten on toiminto, joka tekee siitä melko helppoa.
Koukku päivitysvaihtoehtoihin
Sano, että annettu update_option on lauennut, ennen kuin perehdyt mihinkään koodiin tämän tekemiseksi. Kun olet valmis, sinun on määritettävä takaisinsoitto, joka käynnistyy aina, kun asetus on asetettu.
Tämän lisäksi on otettava huomioon seuraavat seikat:
- Onko kyseinen vaihtoehto vaihdettu?
- Jos on, onko vaihtoehto asetettu (olettaen, että se oli valintaruutu)?
- Jos ei, onko sinulla suunnitelmaa tapauksen käsittelyyn?
Olettaen, että kaikki yllä oleva on selvitetty, tarvitset toiminnon määrittämään toiminnon ja toiminnon, joka toteuttaa takaisinkutsun. Esimerkissäni käytän olio-ohjelmointia, mutta se voidaan tehdä yhtä hyvin proseduuriohjelmoinnissa.
Esimerkissäni käytän olio-ohjelmointia, mutta se voidaan tehdä yhtä hyvin proseduuriohjelmoinnissa.
Esimerkki
Oletetaan, että sinulla on vaihtoehto nimeltä user_is_disguised, ja sinulla on toinen arvo tietokannassa nimeltä user_is_superman.
Aina kun user_is_disguised on asetettu arvoon vielä, user_is_superman tulee asettaa arvoon false. Ja sitten, kun user_is_disguised on asetettu arvoon false, user_is_superman tulee asettaa arvoon tosi.
Lopulta arvot vaihtuvat. Tässä on esimerkki, kuinka se tehdään. Ensin meidän on asetettava koukku :
<?php
/**
* Initializes the defined actions.
*/
public function init() {
add_action(
'update_option',
array( $this, 'toggle_other_option' ),
10, 3
);
}
Sitten meidän on toteutettava funktio arvojen vaihtamiseksi:
<?php
/**
* If the given option_name is `user_is_disguised`, then toggles another option
* in the database - `user_is_superman` - based on the specified values.
*
* @param string $option_name The name of the value being updated.
* @param mixed $old_value The previous value of the option before updating it.
* @param mixed $new_value The value of the option now that it's been updated.
*/
public function toggle_other_option( $option_name, $old_value, $new_value) {
// If 'user_is_disguised' is not being changed, then don't worry about it.
if (0 !== strcasecmp( $option_name, 'user_is_disguised')) {
return;
}
/* If 'user_is_disguised' is being set, then remove the Superman value; otherwise,
* set it to true (but don't worry about autoloading it).
*/
if ('1' === $new_value) {
delete_option( 'user_is_superman' );
} else {
update_option( 'user_is_superman', true, false );
}
}
Ja siitä pitäisi huolehtia.
Huomautus argumenteista
Huomaa, että takaisinsoitto hyväksyy kolme argumenttia (jotka on myös määritelty yllä linkitetyssä dokumentaatiossa). Nämä ovat hyödyllisiä muissa, vähemmän keksityissä toteutuksissa.
Mutta ehkä yksi tärkeimmistä asioista, joka on otettava pois yllä olevasta koodista, on, että tarkistat vaihtoehdon nimen takaisinkutsussa ennen arvojen vaihtamista.