Það er engin þörf á að spyrja afhverju einhver myndi vilja skrifa tappi fyrir WordPress. Það er eitt af aðalatriðunum sem gerir WordPress svo sveigjanlegt og gott að passa fyrir fjölbreytt úrval af verkefnum. Í Fyrsti hluti seríunnar okkar við stofnaði grunninn fyrir WordPress tappi sem er þekktur af kjarna. Þá, í seinni hluti við lærðum hvernig á að breyta sjálfgefna virkni kjarna. Í dag ætlum við að líta á viðbótarmöguleika. Þetta er eitt algengasta verkefni sem viðbætur þurfa að framkvæma.

Algengt er að þú verður að búa til nokkra breytur (valkosti) og gefa notandanum möguleika á að úthluta viðeigandi gildum til þeirra. Gildi eru geymd í gagnagrunninum og hægt að sækja þær á beiðni. Tappi mun venjulega framkvæma mismunandi aðgerðir sem byggjast á þessum gildum, framleiða mismunandi framleiðsla til dæmis.

Hvaða tæki gerir WordPress okkur kleift að gera þessa atburðarás möguleg? Það gerir okkur kleift að skrá valkosti við kerfið og sækja þær með úthlutað auðkenni - Valkostir API er ábyrgur fyrir því. WordPress veitir einnig Stillingar API til að búa til GUI fyrir valmyndarsamskipti. Burtséð frá því gerir það okkur kleift að bæta við sérsniðnum hlutum í stjórnunarvalmyndina svo að viðbótin geti haft eigin stillingar síðu. Að lokum, WordPress sér um öryggi viðbótarmála og býður upp á sett af tækjum og hreinsunaraðferðum til að höndla notanda inntak á öruggan hátt.

Skulum taka nákvæma útlit á hverja hluti.

Valkostir API

The Valkostir API er staðlað leið til að geyma sérsniðin gögn í gagnagrunninum. Öll gögn eru vistuð í wp_options töflunni undir tilteknu sérsniðnu nafni og hægt er að nálgast það frá einhvers staðar í kóðanum. Mikilvægustu aðgerðir API eru:

The get_option virka einfaldlega útdrættir úr gagnagrunninum allar upplýsingar sem eru geymdar undir tilteknu nafni og skilar því. Aðgerðin update_option tekur valkostanafn og gildi þess og uppfærir samsvarandi færslu í gagnagrunninum. Ef það er engin slík færsla verður það búið til sjálfkrafa. Báðar aðgerðir geta starfað með fylkjum og einum gildum. Það þýðir að þú getur geymt array gögn undir einu nafni í gagnagrunninum og API mun takast á við serialization og mineralization aðgerðir fyrir þig. Það er mælt með að æfa fyrir viðbætur: Geyma alla viðbótarmöguleika sem fylki undir einu nafni.

Plugin Options 'síðu

Þú getur búið til stillingar síðu eða hóp af síðum fyrir tappi í stjórnborðinu. Ef þú ert að búa til hóp af síðum ættir þú að bæta efst á síðu fyrst:

Breytu gildin eru sjálfskýringar en þú getur átt við uppspretta fyrir nánari upplýsingar. Nú verður þú að bæta innri síðum eitt í einu á eftirfarandi hátt:

Sem $ parent_slug breytu þarftu að nota auðkenni efstu síðu - ef um er að ræða sérsniðna efstu síðu er það gildi sem þú gafst upp sem $ menu_slug við skráningu. Ef þú þarft ekki nokkrar síður getur þú búið til eina stillingar síðu undir einni af núverandi efstu hlutum - almennt undir "Stillingar" (valmöguleikar-general.php ætti að nota sem $ parent_slug). Að öðrum kosti eru flýtivísunaraðgerðir til að bæta við undirmöppum undir tilteknum admin-valmyndum, ef um er að ræða "Stillingar" er það add_options_page () .

Stillingar API

The Stillingar API leyfir þér að búa til tengi til að stjórna stillingum tappi; merktu síðu sem stillingar síðu (til að vinna inntak sjálfkrafa) og framleiða hluta á þeim síðu og reitum innan hvers hluta til að samþykkja notendaviðmót. Til að ná því markmiði er fyrst og fremst að skrá stillingar með kerfinu og búa til uppbyggingu hluta-reit fyrir þá:

Skoðaðu Codex fyrir nákvæma lýsingu á breytur, en rökfræði er alveg einföld: Fyrst af öllu skráum við valkostanafnið okkar (ef það eru margar möguleikar gætu þau verið skipulögð í hópa); þá skráum við hluti (s) með innri auðkenni og reit af reitum fyrir hvern hluta; API gefur okkur möguleika á að tilgreina sérsniðnar svarhringingar fyrir innsláttarprófun og til að birta hvert reit og hluta.

Eftir að hafa skráð valkosti okkar og samsvarandi reiti verðum við að birta þær á stillingasíðunni - eftirfarandi aðgerðir verða að vera kallaðar inni í

tag:

The settings_fields virka sér um nauðsynlegt falinn reit fyrir innbyggða WordPress valkosti vélbúnaður til að vinna. The do_settings_sections framleiðir í raun áður skráðir köflum og reitum.

Öryggisatriði

Grundvallaröryggisreglan þegar um er að ræða valkosti er mjög einföld: hreinsaðu inntakið, flýttu framleiðslunni og sjá um getu. Með öðrum orðum, ef þú samþykkir inntak frá notanda, verður þú að athuga hvort sniðið sé rétt og inniheldur ekki illgjarn efni (það er löggilding), eftir að þú getur sent gögnin til frekari vinnslu. Þegar gögn eru sótt úr gagnagrunninum ætti það að vera sleppt til að framleiða sérstaka stafi (sérstaklega HTML) rétt. Í báðum verkefnum býður WordPress innbyggðar aðgerðir sem hægt er að nota í mismunandi samhengi (lesa meira um efnið hér ).

Önnur áhyggjuefni er heimildir notenda. WordPress hefur innbyggður vélbúnaður sem stjórnar hlutverkum notenda og getu sem hindrar aðgang að tilteknum stjórnborðssvæðum fyrir notendur með ófullnægjandi heimildir. Aðeins umsjónarmenn eru leyfðir alls staðar. Þegar þú býrð til valkostasíður þarftu að úthluta réttum tækjum til þeirra (venjulega er það 'stjórna_options') og leyfa ekki notendum með litla forréttindi aðgang að síðunni (til að fá frekari upplýsingar um hlutverk og getu WordPress vinsamlegast skoðaðu Codex ).

Setjið allt í vinnuna

Við skulum sjá allt atburðarás í aðgerð.

Við munum halda áfram að þróa dæmi okkar um "Hello World" (byrjað í fyrri hlutum seríunnar) sem birtir upplýsingar um gestgjafarforrit undir færslu með hjálp sérsniðinna takmörkunar.

Blokkaupplýsing höfundar var áður harður dulmáli í tappann. Nú ætlum við að gefa notanda möguleika á að tilgreina sniðmát fyrir þessi merkingu með því að nota staðsetja fyrir höfundar-sérstakar upplýsingar (nafn, slóð og lýsingu). Tappi okkar hefur nú þegar tvær includable PHP skrár: core.php (sem inniheldur aðalkóðann) og admin.php (innihalda admin-tengd kóða).

Hvaða breytingar þurfum við að gera?

1. Búðu til viðbótarsíðu síðu (í admin.php)

/* register menu item */function msp_helloworld_admin_menu_setup(){add_submenu_page('options-general.php','Helloworld Settings','Helloworld','manage_options','msp_helloworld','msp_helloworld_admin_page_screen');}add_action('admin_menu', 'msp_helloworld_admin_menu_setup'); //menu setup/* display page content */function msp_helloworld_admin_page_screen() {global $submenu;// access page settings$page_data = array();foreach($submenu['options-general.php'] as $i => $menu_item) {if($submenu['options-general.php'][$i][2] == 'msp_helloworld')$page_data = $submenu['options-general.php'][$i];}// output?>

'; skila $ aðgerðum;} add_filter (' plugin_action_links ',' msp_helloworld_settings_link ', 2, 2);

Í þessu bragði skapar msp_helloworld_admin_menu_setup undirsíðu undir valmyndinni 'Stillingar' (það ætti að vera framkvæmt á aðgerðarkróknum 'admin_menu' til að virka rétt). Síðan framleiðum við stillingarformið með msp_helloworld_admin_page_screen. Það notar Stillingar API virka fyrir reiti og fyrirfram byggð WordPress virka fyrir aðra þætti tengi (eins og afhenda hnappinn). Athugaðu virkni eigindarinnar á

tag: það ætti að benda á 'options.php' til að vinna úr valkostum á réttan hátt. Að lokum, msp_helloworld_settings_link sía býr til flýtivísunarlína á valkostasíðuna á stjórnunarskjánum.

2. Skráðu viðbótarmöguleika við kerfið og búðu til reiti og reglur fyrir þau

/* 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?>

Ég ætti að benda á að allar viðbótarvalkostir skuli geymdar sem fylki. Þrátt fyrir þá staðreynd að við eigum aðeins einn möguleika (höfundaréttarskýringarmynd), þá færum við það í fylki og samsvarandi reit í hlutann til kynningar. Skráningaraðgerðin msp_helloworld_settings_init ætti að framkvæma á 'admin_init' króknum. Aðgerðin msp_helloworld_options_validate sér um inntak notenda með því að hreinsa það með innfæddum wp_kses_post sía sem byggir á KSES bókasafninu. Aðgerðin msp_helloworld_authorbox_desc býr til lýsingu fyrir hluta myndarinnar og msp_helloworld_authorbox_field framleiðir textarea til að höndla innputtað merkingu. Athugaðu að við úthlutar CSS flokkunum "stóra textakóða" til þess svo að innbyggður adminstíll sé beittur.

Allt þetta framleiðir eftirfarandi skjá í WordPress stjórnborði.

3. Breyta hlutverki sem framleiðir kassa höfundar (í core.php)

Við gerum þetta þannig að það fái sniðmátið úr gagnagrunninum og kemur í stað staðsetningargagna ([gauthor_name], [gauthor_url], [gauthor_desc]) með samsvarandi gildi.

/* 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;}

Að lokum, tappi okkar (eftir að hafa notað nokkrar stílar) framleiðir kassa ágætur gestur höfundur undir pósti efni.

Niðurstaða

Geymsla og aðgangur að valkostagögnum er mjög algengt verkefni, að mikið af viðbótum þarf að framkvæma. Með möguleikum tækisins getur þú veitt notendum þínum kleift að stilla tappann á þörfum þeirra (sem þeir munu örugglega þakka). Jafnvel að þróa fyrir sjálfan þig getur þurft leið til að geyma upplýsingar um tiltekna uppsetningu. Reiða sig á innfæddur WordPress API og virka þegar leysa slík verkefni er góð leið til að búa til viðhaldsvæn, örugg og framtíðarsvörunarkóða.

Hvaða viðbætur viltu sjá í boði fyrir WordPress? Hefur þú byggt þinn eigin með þessum flokki? Láttu okkur vita í athugasemdum hér fyrir neðan.

Valin mynd notar mát mynd um Shutterstock