Ei ole tarpeen kysyä miksi kukaan haluaisi kirjoittaa plugin WordPressille. Se on yksi ensisijaisista ominaisuuksista, jotka tekevät WordPressista joustavan ja sopivan hyvin moniin erilaisiin projekteihin. Sisään sarjan ensimmäinen osa luomme pohjan WordPress-laajennukselle, jonka ydin tunnistaa. Sitten, vuonna toinen osa opimme muuttamaan ytimen oletustoimintoja. Tänään tarkastelemme lisäominaisuuksia. Tämä on yksi tavallisimmista tehtävistä, joita laajennukset tarvitsevat.
Yleensä sinun on luotava joukko parametreja (lisävarusteita) ja annettava käyttäjälle mahdollisuus antaa heille sopivia arvoja. Arvot tallennetaan tietokantaan ja ne voidaan hakea pyynnöstä. Plugin suorittaa normaalisti erilaisia toimintoja näiden arvojen perusteella ja tuottaa erilaisia tulosteita.
Mitä työkaluja WordPress antaa meille mahdollisuuden tehdä tämä skenaario mahdolliseksi? Sen avulla voimme rekisteröidä vaihtoehtoja järjestelmään ja hakea ne määritetyllä tunnuksella - Options API vastaa siitä. WordPress tarjoaa myös Asetukset-sovellusliittymän, joka luo järjestelmänvalvojan käyttöliittymän lisäasetusten dialogeihin. Lisäksi se mahdollistaa mukautettujen kohteiden lisäämisen admin-valikkoon niin, että pluginilla voi olla omat asetussivunsa. Lopuksi, WordPress huolehtii plugin turvallisuudesta ja tarjoaa joukon ominaisuuksia ja puhdistusmenetelmiä käsittelemään käyttäjän tuloja turvallisesti.
Tarkastellaan yksityiskohtaisesti jokaista osaa.
Options API Options API on standardoitu tapa tallentaa mukautetut tiedot tietokantaan. Kaikki tiedot tallennetaan wp_options-taulukkoon tietyn muokatun nimen kohdalla ja niitä voi käyttää jonnekin koodissa. API: n tärkeimmät toiminnot ovat:
Get_option-funktio yksinkertaisesti poistaa tietokannasta kaikki tietyn nimen alle tallennetut tiedot ja palauttaa sen. Funktio update_option ottaa vaihtoehto -nimen ja sen arvon sekä päivittää vastaavan merkinnän tietokantaan. Jos tällaista merkintää ei ole, se luodaan automaattisesti. Molemmat toiminnot voivat toimia ryhmien ja yksittäisten arvojen kanssa. Tämä tarkoittaa, että voit tallentaa taulukkotiedoston tietokannassa yhden nimen alle ja API käsittelee sarjoituksen ja mineraalisuunnittelutoimet sinulle. Tämä on suositeltava käytäntö plugins: tallentaa kaikki plugin vaihtoehtoja array alle yhden nimen.
Voit luoda asetussivun tai sivuryhmän laajennukselle admin-valikossa. Jos luot sivuryhmää, sinun on ensin lisättävä ylätason sivu:
Parametriarvot ovat itsestään selvät, mutta voit viitata lähde yksityiskohtia varten. Nyt sinun on lisättävä sisäisiä sivuja yksi kerrallaan seuraavasti:
Kuten $ parent_slug -parametri, sinun on käytettävä ylätason sivun tunnusta - jos kyseessä on mukautettu ylätaso, se on arvo, jonka annat $ menu_slug rekisteröinnin yhteydessä. Jos et tarvitse useita sivuja, voit luoda yhden asetussivun jonkin olemassa olevan ylätason osion alla - tavallisesti kohdassa "Asetukset" (vaihtoehtona-general.php tulisi käyttää $ parent_slugina). Vaihtoehtoisesti on myös pikavalintoja alaotsikoiden lisäämiseen tietyissä hallintavalikkokohteissa, "Asetukset" tapauksessa add_options_page () .
Settings API Asetukset API voit luoda käyttöliittymän pluginin asetusten hallitsemiseksi; merkitse sivun asetussivuksi (prosessointi automaattisesti) ja tuota sivun ja kenttien sivuja ja kenttiä jokaisen osion sisällä käyttäjien syöttämisen hyväksymiseksi. Tämän saavuttamiseksi ensimmäinen tavoite on rekisteröidä asetukset järjestelmään ja luoda osion kenttien rakenne niille:
Viittaavat Codex parametrien yksityiskohtainen kuvaus, mutta logiikka on melko yksinkertainen: ensinnäkin rekisteröimme vaihtoehtomme nimen (jos on paljon vaihtoehtoja, ne voidaan järjestää ryhmiin); rekisteröimme osan (t) sisäisellä tunnuksella ja kenttien saralla jokaiselle osalle; API antaa meille mahdollisuuden määrittää mukautetut soittopyynnöt panoksen validointiin ja kunkin kentän ja osion näyttämiseen.
Kun rekisteröimme vaihtoehtomme ja vastaavat kentät, meidän on näytettävä ne asetussivulta - seuraavissa toiminnoissa on oltava nimeltään
/* register settings */function msp_helloworld_settings_init(){register_setting('msp_helloworld_options','msp_helloworld_options','msp_helloworld_options_validate');add_settings_section('msp_helloworld_authorbox','Author's box','msp_helloworld_authorbox_desc','msp_helloworld');add_settings_field('msp_helloworld_authorbox_template','Template','msp_helloworld_authorbox_field','msp_helloworld','msp_helloworld_authorbox');}add_action('admin_init', 'msp_helloworld_settings_init');/* validate input */function msp_helloworld_options_validate($input){global $allowedposttags, $allowedrichhtml;if(isset($input['authorbox_template']))$input['authorbox_template'] = wp_kses_post($input['authorbox_template']);return $input;}/* description text */function msp_helloworld_authorbox_desc(){echo "Enter the template markup for author box using placeholders: [gauthor_name], [gauthor_url], [gauthor_desc] for name, URL and description of author correspondingly.
";}/* filed output */function msp_helloworld_authorbox_field() {$options = get_option('msp_helloworld_options');$authorbox = (isset($options['authorbox_template'])) ? $options['authorbox_template'] : '';$authorbox = esc_textarea($authorbox); //sanitise output?>
Minun on huomautettava, että kaikki lisäosat on tallennettava ryhmänä. Huolimatta siitä, että meillä on vain yksi vaihtoehto (authorbox_template), sisällytämme se ryhmään ja vastaava kenttä osaan demonstraatiotarkoituksiin. Rekisteritoiminto msp_helloworld_settings_init olisi suoritettava 'admin_init' -koukussa. Toiminto msp_helloworld_options_validate huolehtii käyttäjän syötteistä puhdistamalla sen natiivilla wp_kses_post suodatin, joka perustuu KSES-kirjastoon. Toiminto msp_helloworld_authorbox_desc luo kuvauksen lomakkeen osalle ja msp_helloworld_authorbox_field tuottaa tekstikentän käsittelemään syötettyä merkintää. Huomaa, että osoitamme CSS-luokkien "suurikokoisen koodin" niin, että sisäänrakennettu admin-muotoilu on käytössä.
Kaikki tämä tuo seuraavaa näyttöä WordPressin hallintapaneeliin.
Teemme tämän niin, että se saa mallin tietokannasta ja korvaa paikkamerkkitiedot ([gauthor_name], [gauthor_url], [gauthor_desc]) vastaavilla arvoilla.
/* Create author's box markup */function msp_helloworld_author_block(){global $post;$author_terms = wp_get_object_terms($post->ID, 'gauthor');if(empty($author_terms))return;$name = stripslashes($author_terms[0]->name);$url = esc_url(get_term_link($author_terms[0]));$desc = wp_filter_post_kses($author_terms[0]->description);//get template from option$options = get_option('msp_helloworld_options');$out = (isset($options['authorbox_template'])) ? $options['authorbox_template'] : '';$out = str_replace(array('[gauthor_url]', '[gauthor_name]', '[gauthor_desc]'),array($url, $name, $desc),$out);return $out;}
Lopuksi meidän plugin (joidenkin tyylien soveltamisen jälkeen) tuottaa mukavan vieraskirjan laatikon postisisältöön.
Lisätietojen tallentaminen ja käyttäminen on hyvin yleinen tehtävä, jota useat laajennukset tarvitsevat. Vaihtoehtomekanismin avulla voit tarjota käyttäjille mahdollisuuden virittää plugin heidän tarpeisiinsa (jotka he varmasti arvostavat). Jopa kehittämällä itse tarvitset tapa tallentaa tietyn asennuksen yksityiskohdat. Tukeutuen natiiviin WordPress-sovellusliittymiin ja toimintoihin tällaisten tehtävien ratkaisemisessa on hyvä tapa luoda ylläpidettävä, turvallinen ja tulevaisuuden kestävä koodi.
Millaisia laajennuksia haluat nähdä käytettävissä WordPressissä? Oletko rakentanut omasi käyttämällä tätä sarjaa? Kerro meille alla olevissa huomautuksissa.