, skabe et kørekort kontrollerede tema, og stik af ajourført system, del 1: kørekort manager, stik af,,,,, 51,,,,,,,,, 9,,,,,,, det cyber - mandag envato tuts + kurser vil reduceres til $3.- og' t miss. denne post er en del af en serie kaldet skabe et kørekort kontrollerede tema, og stik af ajourføre system. skabe et kørekort kontrollerede stik af tema og ajourføre system - del 2: kørekort manager api, som de europæiske wordpress tema, og stik af fortegnelser, der er tider, hvor man ønsker ikke at bruge dem til at distribuere deres stik af eller tema.måske er det, fordi du sælger din plugins eller temaer, eller måske du bare vil holde dem for dig selv og gøre dem tilgængelige inden for deres organisation eller gruppe af venner. ,, men hvad med opdateringer.,, hvis du er den eneste bruger, at uploade stik af eller tema manuelt fungerer ret godt. , men når du har flere brugere end det, ved hjælp af opdateringer, admin side i wordpress vil komme i handy.,,, wordpress opdateringer, funktioner er blevet udviklet med de officielle wordpress stik af og tematiske fortegnelser i tankerne, men ingen bekymringer: wordpress har aktioner og filtre, som gør det muligt for os at være i funktion og tilføje en server i vores egen i mixet.,, hvad vil du lære, i denne første lektion i serien, begynder vi med at skabe en wordpress stik af, at dit websted til licensforvaltning server.i del to, vil vi fortsætte med at bygge de stik af, ved at tilføje en grænseflade til det.i del 3, vi vil anvende api til at gøre en wordpress stik af eller tema taler tilbage til kørekort manager for opdateringer. , og samtidig skabe de stik af, i denne første del, du vil lære om følgende wordpress stik af udvikling teknikker: , ved hjælp af wordpress stik af boilerplate i gang hurtigt. , at skabe en ny skik post med en meta - æske til opbevaring af custom meta - data., skaber en bevarelse af database til deres stik af. at tilføje punkter til databasen. liste over poster med wordpress egen liste tabel gennemførelse.,, hvis du ønsker at se stik af i aktion, du kan downloade det seneste version af stik af fra wordpress.org.de nøjagtige kilde - kode, der er anvendt i denne forelæsning, tjek knyttet tuts + github register (til højre). vil vi gennemgå alle skridt for at skabe det stik af én efter én, men hvis du ikke vil bygge det hele op fra bunden, som sammen med kildekoden er en god måde at organiserer din uddannelse. og nu, lad os komme i gang.,, 1.skabe stik af med wordpress stik af boilerplate, komme i gang med en ny wordpress stik af består af en masse gentagearbejde, at du gør igen og igen med alle stik af, du skaber, som f.eks. at skrive ny kode eller kopiering og oprensning af gamle projekter.,, men der er en bedre vej. , denne gang, i stedet for at kopiere et eksisterende projekt, eller at starte fra bunden, vi vil bruge tom mcfarlin er wordpress stik af boilerplate, et udgangspunkt, der er beregnet til at komme i gang med en velstruktureret, samt wordpress stik af, på ingen tid. ,,, før vi begynder at sætte vores egne funktioner, lad os etablere den grundlæggende stik af med stik af boilerplate.,, downloade boilerplate og gør det til dit eget, er den nemmeste måde at downloade stik af boilerplate besøge projektets hjemmeside og downloade den seneste version som et lyn fil.,, når du har downloadet og uemballeret zip pakke, finde bagagerummet, mappe inde i det, med kopi til deres foretrukne beliggenhed og omdøbe det, wp kørekort manager. , så det er tid til at gå gennem stik af boilerplate filer og gøre dem til vores egne:,, gennem alle de - filerne stik af directory (og dets underkataloger) gav alle forekomster af, stik af navn, wp kørekort manager, og plugin_name, til wp_license_manager,.sørg for, at omdøbe såvel klasse navne og deres indeholder filer. , det vil tage lidt tid og det manuelle arbejde, så ved hjælp af et php ide til at hjælpe med at omdøbe er en god idé, tilføje stik af oplysninger på de stik af bootstrap fil, der nu kaldes, wp ‑ license-manager.php og beliggende i stik af root fortegnelse.du finder de oplysninger i bemærkning blok på toppen af den fil, lige efter phpdoc mærke , @ wordpress stik af,.,,, du har skabt en tom stik af med nogle grundlæggende konfiguration, og det er bare venter på, at du begynder at tilføje funktioner.det er tid til at opbygge vores kørekort manager! ,, hvis du vil læse mere om ved hjælp af boilerplate, tjek tom mcfarlin er tutor - serien, udvikling plugins med wordpress boilerplates.det er baseret på en tidligere version af boilerplate, men vil stadig give dem en bedre forståelse af de tanker, der ligger bag et stik af boilerplate og arbejder med en., 2.skabe en sædvane efter type produkter, vores licens manager, stik af, er meget enkel og butik og brug bare to typer data:, produkter og licenser.som produkter, der er nødvendig for at oprette licenser (og produkter er det nemmere for de to), det er der, vi skal starte, her er hvad du vil bygge i dette afsnit:,,,,, en , produkt, vil udgør en wordpress stik af, eller du vil styre tema gennem dit kørekort manager - server.ligesom en blog, post eller side, et produkt har et navn og en beskrivelse.derudover er det en række yderligere områder for at definere produktspecifikke oplysninger:,,,, version: produktets versionsnummer.dette område vil blive anvendt til at kontrollere, om opdateringer i anden og tredje del af denne forelæsning serie.,, fil spand,: - s3 spand, hvor dossieret opbevares. , fil navn: filens navn på produktet zip opbevares i amazon s3.vi taler om disse akter muligheder i anden del af den serie.,, testes med wordpress version, , kræver wordpress version, , senest ajourført,,,, fanen højt, og banner lav: disse muligheder er angivet i stik af ajourføring af eu - erhvervsgrenen i tredje del af tutor - serien. og nu, lad os opbygge dette ved at skabe en sædvane efter type, og at tilføje en meta - boks.,, trin 1: skabe efter type, stik af boilerplate deler stik af er funktionalitet logisk i to dele: offentlige funktioner og funktioner for administrationen.mens denne adskillelse giver mening i de fleste tilfælde efter typer er et sted midt imellem, og man kunne argumentere for, at placere dem i en af de to.jeg har besluttet at gå med offentlige.,,, så det fungerer , define_public_hooks i klassen, wp_license_manager, i , omfatter /klasse wp kørekort manager. php, og tilføje følgende nye foranstaltninger efter de to, wp_enqueue_scripts, aktioner, der allerede er til stede, $- > og lad - > add_action ("lokalitet, $plugin_public, add_products_post_type"), og denne linje, anvender den boilerplate indsats og filter lader tilføje en aktion kontaktperson til wordpress aktion, lokalitet.den funktion, add_products_post_type, går i klasse , wp_license_manager_public,. , her er hele funktion:,, /* * * registrering af nye "produkter" post - til brug for produkter, der er til rådighed for køb via licens manager.*/ public function add_products_post_type() { register_post_type( 'wplm_product', array( 'labels' => array( 'name' => __( 'Products', $this->plugin_name ), 'singular_name' => __( 'Product', $this->plugin_name ), 'menu_name' => __( 'Products', $this->plugin_name ), 'name_admin_bar' => __( 'Products', $this->plugin_name ), 'add_new' => __( 'Add New', $this->plugin_name ), 'add_new_item' => __( 'Add New Product', $this->plugin_name ), 'edit_item' => __( 'Edit Product', $this->plugin_name ), 'new_item' => __( 'New Product', $this->plugin_name ), 'view_item' => __( 'View Product', $this->plugin_name ), 'search_item' => __( 'Search Products', $this->plugin_name ), 'not_found' => __( 'No products found', $this->plugin_name ), 'not_found_in_trash' => __( 'No products found in trash', $this->plugin_name ), 'all_items' => __( 'All Products', $this->plugin_name ), ), 'public' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'author', 'revisions', 'thumbnail' ), 'rewrite' => array( 'slug' => 'products' ), 'menu_icon' => 'dashicons-products', ))), lad os gå igennem den funktion, og hvad det betyder med andre ord, de parametre, for wordpress funktion, register_post_type,.,, det første parameter, $post_type, (, 6) definerer identifikator for post - type, der anvendes i wordpress admin forbindelser og være stillinger i denne type (jeg gik med, wplm_product, for at holde det fra kolliderer med post - typer, der er skabt af andre plugins og emner), den anden parameter (, linje 7 – 28) er et system, der definerer egenskaberne af post - (den fuldstændige liste over muligheder, du kan bruge, tjek wordpress codex):,,, etiketter, definerer et sæt strenge mærkning, der anvendes til at referere til den efter type i wordpress administrative område.,, offentlige, definerer synligheden af stillinger for denne nye type.jeg ønskede produkter til browsable folk besøger webstedet, så jeg sætter denne til sand.på den anden side, hvis du ønsker at holde varer, en privat sag, bare sæt denne mulighed, falske,.,, has_archive, fastlægger, om wordpress tjener et arkiv side til at opføre de stillinger, af denne type eller ej.,, støtter, definerer, hvilke efter redigering karakteristika er vist i post - redaktør.,, skriv, definerer, hvordan permalinks for denne varetype vil se. ,, menu_icon, definerer ikon til brug for efter type i administrationen af menuen.besøg wordpress udvikler sted til en fuldstændig liste over instrumentbrættet ikoner.,, med angivelse af, at tilføje, og redigering af produkter er nu behandlet af wordpress.hvad er der tilbage for os at gøre, er at tilføje meta - æske med praksis indstillinger, der er nævnt ovenfor,.,, trin 2: tilføje en meta - kasse for produktinformation, nu hvor vi har skabt den sædvane, efter type produkter, vi har alt hvad vi skal bruge til opbevaring af produkter i licens forvaltningssystem.men for at gøre det efter type mere anvendelige, lad os fortsætte ved at tilføje en meta - kasse for produktspecifikke oplysninger.,, her er hvad meta - æske ligner:,,,,, først, lad os tage en aktion for at tilføje den meta - æske. , add_meta_boxes_ {post_type}, er et godt valg: blot tilføje efter type i stedet for (post_type}, og deres indsats bliver bare ringede, når det er tid til at tilføje meta - kasser til en stilling i denne type (i dette tilfælde, , wplm_product,.,, som vi arbejder på det administrative område, tilføjes følgende koder i funktion , define_admin_hooks() i de vigtigste stik af klasse, wp_license_manager:,, $- > anordninger - > add_action ('add_meta_boxes_wplm_product, $plugin_admin, add_product_information_meta_box), den funktion, , add_product_information_meta_box() i, wp_license_manager_admin, blot definerer meta - boks og en gengivelse, funktion, for at dets indhold:,,, /* * * registrerer en meta - rubrik for registrering af oplysninger om produktet.meta - boks er * angivet i post - redaktør for "produkt" post - type.* * @ param $efter wp_post post - objekt anvendes meta - æske til * /offentlige funktion add_product_information_meta_box ($post) (add_meta_box ('produktinformation meta - box, __ (information, $- > plugin_name) system ($, render_product_information_meta_box "), wplm_product" "side");}, funktionen indeholder kun en opfordring til wordpress funktion , add_meta_box, der definerer meta - æske.parametrene i rækkefølge, er følgende:,,, $id: http: //id område værdi for meta - box element. $afsnit: afsnit af meta - boks, vist øverst på æsken. $opkald: den funktion, som vil gøre den meta - box gengivelse.,, $post_type: efter type side redaktør, som denne meta - rubrik anføres. $forbindelse: hvor meta - boks skal anbringes ('normal, 'advanced, eller 'side).,, tilføje at fungere, vi har fastlagt i den tredje parameter:,, /* * * gør produktet oplysninger meta - kasse for den pågældende post (wplm_product).* * @ param $efter wp_post den wordpress post objekt blev afsagt.* /offentlige funktion render_product_information_meta_box ($post) ($product_meta = get_post_meta ($post - > id, wp_license_manager_product_meta, sande); hvis (!is_array ($product_meta)) ($product_meta = system ('file_bucket = > "," file_name = > "," version "= >", "afprøvet" = > "," kræver "= >", "ajourføres » = >", "banner_low = >", "banner_high = >');} $- > render_nonce_field ('product_meta_box) kræver (" delvise /product_meta_box. folkesundhedsprogrammet)},,, linje 7: den funktion begynder med at læse i den nuværende meta - data.,,,,,,, linje 9 – 20: hvis meta - data er tom (det er på dette punkt, faktisk...), skabe en misligholdelse meta - data system med tomme værdier.,,, linje 22:, udskrive en pædofil område, som vil blive anvendt til en vis ekstra sikkerhednår at redde meta - data., render_nonce_field, er en hjælper, funktion, jeg har skabt for at hjælpe mig med at huske lige nu hedder.vi kan tilføje det i et stykke tid.,,, linje 24:, omfatter de faktiske meta - box html.den delvise, statistik, er en del af wordpress stik af boilerplate og beregnet til at adskille html kode fra folkesundhedsprogrammet.her er hvordan modellen fil for meta - boks skal se: , <?php /* * * udsigten til stik af produkt meta - æske.produktet meta - box anvendes til * i yderligere vareoplysninger (version, fil spand, file navn).* * @ pakke wp_license_manager * @ subpackage wp_license_manager /admin /delvise * /?> < p > < etiket til = "wp_license_manager_product_version" > <?folkesundhedsprogrammet aspektet _e (version: $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_version" navn = "wp_license_manager_product_version" værdi = "<?php echo esc_attr ($product_meta ['version ']).> "størrelse = 25 > < /p > < p > < etiket til =" wp_license_manager_product_tested "> <?folkesundhedsprogrammet aspektet _e ("testet med wordpress version: $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_tested" navn = "wp_license_manager_product_tested" værdi = "<?php echo esc_attr ($product_meta ['tested ']).> "størrelse = 25 > < /p > < p > < etiket til =" wp_license_manager_product_requires "> <?folkesundhedsprogrammet aspektet _e ("kræver wordpress version: $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_requires" navn = "wp_license_manager_product_requires" værdi = "<?php echo esc_attr ($product_meta ['requires']).> "størrelse = 25 > < /p > < p > < etiket til =" wp_license_manager_product_updated "> <?folkesundhedsprogrammet aspektet _e (senest opdateret: "$- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_updated" navn = "wp_license_manager_product_updated" værdi = "<?php echo esc_attr ($product_meta ['updated ']).> "størrelse = 25 > < /p > < p > < etiket til =" wp_license_manager_product_banner_low "> <?folkesundhedsprogrammet aspektet _e ("banner lave:" $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_banner_low" navn = "wp_license_manager_product_banner_low" værdi = "<?php echo esc_attr ($product_meta ['banner_low ']).> "størrelse = 25 > < /p > < p > < etiket til =" wp_license_manager_product_banner_high "> <?folkesundhedsprogrammet aspektet _e ("fanen højt:" $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_banner_high" navn = "wp_license_manager_product_banner_high" værdi = "<?php echo esc_attr ($product_meta ['banner_high ']).> "størrelse = 25 > < /p > < h3 > downloade < /h3 > < p > < etiket til =" wp_license_manager_product_bucket "> <?folkesundhedsprogrammet aspektet _e ("amazon s3 spand: $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_bucket" navn = "wp_license_manager_product_bucket" værdi = "<?php echo esc_attr ($product_meta ['file_bucket ']).> "størrelse = 25 /> < /p > < p > < etiket til =" wp_license_manager_product_file_name "> <?folkesundhedsprogrammet aspektet _e ("amazon s3 filnavn: $- > plugin_name)?> < /etiketten > < input type = "tekst" id = "wp_license_manager_product_file_name" navn = "wp_license_manager_product_file_name" værdi = "<?php echo esc_attr ($product_meta ['file_name ']).> "størrelse = 25 /> < /p >,, modellen er ganske: en række etiketter, efterfulgt af input elementer med deres værdier, læse fra $product_meta, system, vi fandt i funktion.,, nu med meta - æske der tager vi os for at redde sine data.,, trin 3: redde meta - box data, som de sikkert har bemærket, når vi udvikler en wordpress stik af, at tilføje en ny funktionalitet begynder altid med at finde en passende aktion eller filter for det. , gælder dette også for at redde meta - box data. denne gang, foranstaltninger til at save_post, er en aktion, der er aktiveret, når en stilling er gemt i wordpress administration.igen, i den klasse, wp_license_manager, og dets funktion, define_admin_hooks(), tilføje en ny linje:,, $- > anordninger - > add_action ('save_post, $plugin_admin, save_product_information_meta_box), den funktion, save_product_information_meta_box, går på, wp_license_manager_admin, klasse: /* * * sparer produktet oplysninger meta - box indhold.* * @ param $post_id int id af efter at blive reddet.* /offentlige funktion save_product_information_meta_box ($post_id) (hvis (!$- > is_nonce_ok ('product_meta_box')) (tilbagevenden $post_id;} //ignorere auto redder hvis (defineret ('doing_autosave) & & doing_autosave) {tilbage $post_id;} //checke brugerens tilladelse, hvis!current_user_can ('edit_posts, $post_id) {tilbage $post_id;} //læse, steriliseret, og opbevare brugerinput $meta - = get_post_meta ($post_id, wp_license_manager_product_meta, sande); hvis ($meta - = = ") ($meta - = array();} $meta - ['file_bucket'] = sanitize_text_field ($_post ['wp_license_manager_product_bucket ']); $meta - ['file_name'] = sanitize_text_field ($_post ['wp_license_manager_product_file_name ']); $meta - ['version'] = sanitize_text_field ($_post ['wp_license_manager_product_version ']); $meta - ['tested'] = sanitize_text_field ($_post ['wp_license_manager_product_tested ']); $meta -'requires'] = sanitize_text_field ($_post ['wp_license_manager_product_requires']); $migta ['updated '] = sanitize_text_field ($_post ['wp_license_manager_product_updated']); $meta - ['banner_low '] = sanitize_text_field ($_post ['wp_license_manager_product_banner_low']); $meta - ['banner_high '] = sanitize_text_field ($_post ['wp_license_manager_product_banner_high']); //ajourføring meta - område update_post_meta ($post_id, wp_license_manager_product_meta "- meta -)}, lad os gå igennem den funktion, for at se, hvad det betyder:,,, linje 7 – 9:, som du husker, vi har tilføjet en pædofil område, lige før, at produktet meta - æske.i denne funktion, vi bruger det lige nu for at sikre, at den person, der er udstationering data kommer fra den form, vi vil tilføje den funktion, is_nonce_ok, snart).,, linje 11 – 14:, ikke redde meta - box data, når wordpress gør sit periodiske auto redder.det er på grund af misligholdelse, wordpress ikke passerer meta - box data, når det er ajax opfordring til at gøre autosave og ajourføring af meta - box data på dette punkt ville ødelægge det.,, linje 16 – 19: kun tillade, at redde data, hvis brugeren kan redigere poster.en ting er at overveje i fremtiden vil tilføje en skik evne til redigering af kørekort manager produkter.,, linje 22 – 25:, kan du læse den eksisterende produkt meta - data, eller skabe nye data system, hvis der ikke meta - data er blevet reddet endnu (, get_post_meta, vender tilbage til en tom snor, hvor meta - datapost er ikke fundet og den tredje parameter er sat til, sandt,.,, linjer 27 – 34: læse i de indsendte data, og laver noget grundlæggende sanitet,.,, 37, er alt i orden, undtagen data. nu, før vi går videre til licenser, lad os gøre det en sidste ting, jeg har været lovende og tilføje hjælper funktioner for at og kontrol med meta - boks lige nu. , først at skabe én: /* * * en hjælper funktion for at skabe, og at en pædofil område.* * @ param $nonce_label snor et indre (kortere) pædofil navn * /privat funktion render_nonce_field ($nonce_label) ($nonce_field_name = $- > plugin_name. "_ ".nonce_label dollars. "_nonce. $nonce_name = $- > plugin_name. "_ ".$nonce_label; wp_nonce_field ($nonce_name, $nonce_field_name)}, kernen i denne funktion er at opfordre til, wp_nonce_field, betyder det faktiske arbejde for at skabe den tidligere tegn, der anvendes til pædofil og skrive det i en skjult html område.,,,,, se: /* * * en hjælper funktion til kontrol af produktet meta - boks lige nu.* * @ param $nonce_label snor et indre (kortere) pædofil navn * @ tilbage blandet falske, hvis lige nu er ikke okay.1 eller 2, hvis pædofil er ok (@ se wp_verify_nonce) * /privat funktion is_nonce_ok ($nonce_label) ($nonce_field_name = $- > plugin_name. "_ ".nonce_label dollars. "_nonce. $nonce_name = $- > plugin_name. "_ ".$nonce_label; hvis (!isset ($_post [$nonce_field_name]) {tilbage falske} $pædofil = $_post [$nonce_field_name] tilbage wp_verify_nonce ($pædofil, $nonce_name)}, voldtægtsforbryder kontrolfunktion anvender samme navn konventioner fra funktion over og bruger dem til at hente svansen fra de forelagte form data (, linjer 11 – 15).så, hvis de lige nu er fundet, det bruger wordpress funktion, wp_verify_nonce, for at kontrollere, at de forelagte kode matcher de reddede en linje 17). 3.tilføj licenser, og vi er nu halvvejs igennem det første lektion i serien: produkter er på plads, og det er tid til at tage et kig på licenser.,, en licens på sin simpleste består af to elementer: en licens, og en bruger - id, (vi vil bruge en e - mail - adresse det).for mere kontrol med licens, vil vi også gerne tilføje et tredje element: en licens, udløbsdato, en dato, efter hvilken kørekort, er ikke længere gyldig og ikke vil have opdateringer fra vores licens manager - server. , administrationen - for licenser vil være helt magen til det, vi har skabt for produkter: liste over licenser og en mulighed for at skabe nye.gennemførelsen vil imidlertid være meget forskellig: mens en vare svarer til post - metafor pænt og var derfor naturligt at gennemføre som en sædvane efter type, licenser er bedst gennemføres ved hjælp af en database, fortegnelse over deres egne.,, trin 1: oprette en database, tabel, og opbygning af licenser begynder med at oprette databasen funktioner, som holder de licenser. den mest naturlige tid til at skabe en ny database bord er lige på stik af aktivering, før brugeren har mulighed for at forsøge at gøre noget med tabel.,, wordpress stik af boilerplate gør dette nemt ved at yde en tom funktion, at vi kan begynde at skrive vores kodeks.den funktion, aktiver, i klassen, wp_license_manager_activator, kaldes hver gang stik af er aktiveret, enten ved at klikke på , aktiver , i , plugins, menu, eller når en stik af opdatering er færdig. , først tilsættes følgende variabel definition i toppen af klassen. /* * * databasens versionsnummer.ajourføring af dette, hver gang du ændre den database struktur.* * @ adgang til beskyttede * @ var snor $db_version databasen versionsnummer * /beskyttede statisk $db_version = 1, og derefter ajourføre aktivering funktion med følgende kode:,,, /* * * kode, der drives ved stik af aktivering.* /offentlige statisk funktion activate() (//ajourføring af databasen, hvis db version har øget $current_db_version = get_option (wp kørekort manager db udgave); hvis (!$current_db_version) ($current_db_version = 0} hvis (intval ($current_db_version) < wp_license_manager_activator: $db_version) (hvis (wp_license_manager_activator: create_or_upgrade_db()) (update_option (wp kørekort manager db version, wp_license_manager_activator: $db_version)}}}, her er hvad den funktion, er:,,, linje 6 – 9:, læse i den mulighed, wp kørekort manager db version.vi vil benytte denne mulighed til at opbevare stik af databasen udgave i øjeblikket på stedet.,,, linje 11:, sammenligner den nuværende version med den database, der er defineret i den stik af er codebase ($db_version, som defineret ovenfor).hvis det antal, der er fastsat i den udgave, stik af kode er højere end den, der er oplagret i wordpress muligheder, en database ajourføring er nødvendig. ,,, linje 12:, løb den database, opdatering.,,, linje 13:, hvis databasen ajourføring var vellykket, ajourføre den mulighed, wp kørekort manager db version, for at matche den version, der er i kode. , nu har vi oprettet et system til at holde styr på database versioner, og kan komme til at skabe en database.der tilføjes følgende funktioner, wp_license_manager_activator,: /* * * skaber den database, tabeller, der er nødvendige for stik af, hvis de ikke eksisterer.ellers ajourføres efter behov.* * @ tilbage bool sandt, hvis ajourføring var vellykket.* /menig static funktion create_or_upgrade_db() (global $wpdb. $table_name = $wpdb - > præfiks. "product_licenses. $charset_collate = "; hvis (!tom ($wpdb - > charset)) ($charset_collate = "misligholdelse karaktersæt ($wpdb - > charset}"} hvis (!tom ($wpdb - > indsamle)) ($charset_collate. = "indsamle ($wpdb - > indsamle}"} $sql = "skabe tabel".table_name dollars. "("".id - mediumint (9) ikke er auto_increment "."product_id mediumint (9) misligholdelse 0 ikke er "."license_key varchar (48), der ikke er "."e - mail varchar (48), der ikke er "."valid_until datetime default "0000-00-00 lang" for ",".created_at datetime default "0000-00-00 lang" for ",".updated_at datetime default "0000-00-00 lang" for ",".enestående centrale id (id). "). $charset_collate. ""require_once (abspath."wp admin /omfatter /opgradering. php '); dbdelta ($sql); tilbage.}, er de fleste af denne funktion er at skabe sql, skabe tabel, spørgsmål, som vi vil bruge til at oprette en database, tabel:,,, linje 10:, opbygge navn til databasen,.,, strækninger, der – 18: 12, nogle charset definitioner, der skal anvendes i den endelige sql.,,, linje 20 – 29:, sql for skabe tabel, spørgsmål.tabellen vil have følgende kolonner:,,, id: en unik id for kørekort row.,, product_id,: id af det produkt, som kørekort er forbundet.,, license_key: en streng licens nøgle, der er anvendt som kodeord.,, e - mail: kørekort ejer er e - mail - adresse, der fungerer som brugeren navn.,, valid_until: licensens udløbsdato.,, created_at: tidsstempling, når kørekort blev skabt.,, updated_at,: ikrafttrædelsestidspunkt for den seneste opdatering.,,,,,,, der den 31. – 32: anvendelse wordpress database, ajourføre metode, dbdelta, for at skabe eller ajourføre database.bemærker, at dbdelta ikke løbe, skabe tabel, spørgsmål, som er, men analyserer det og sammenligner det med den nuværende tabel struktur, det nødvendige ændringer. , så senere, hvis du beslutter at foretage ændringer i tabellen er struktur, i stedet for at skrive en ny sql forespørgsel, vil du klippe dette skaber tabel, søgning, ajourføre, $db_version parameter, og lad dbdelta klare resten. , for flere oplysninger om oprettelsen af databasen tabeller i wordpress og bruger, dbdelta, læst den artikel, skabe tabeller med plugins i wordpress codex.,, og det er det.næste gang du aktivere stik af, en database for licenser vil blive skabt.hvis du allerede har aktiveret det stik af, du bliver nødt til at gøre det igen (deaktivere og derefter aktiveres igen at oprette databasen.,, trin 2: skabe kørekort menu sider, nu hvor vi har oprettet en database, tabel for lagring af licenser, lad os skabe to sider: ", licenser," og ", tilføjer nye,". , igen, begynder vi, ved at at de rette foranstaltninger, wp_license_manager, funktion, define_admin_hooks:,,, $- > anordninger - > add_action ('admin_menu, $plugin_admin, add_licenses_menu_page), aktionen funktion, add_license_menu_page, går til, wp_license_manager_admin, og ser sådan ud: /* * * skaber miljøer menu og sub - menuer for at tilføje, og hvori licenser.* /offentlige funktion add_licenses_menu_page() {add_menu_page (__ (licenser, $- > plugin_name), __ (licenser, $- > plugin_name), edit_posts ", wp licenser, system ($, render_licenses_menu_list"), dashicons lås "," 26.1 '); add_submenu_page (wp licenser, __ (licenser, $- > plugin_name), __ (licenser, $- > plugin_name), edit_posts ", wp licenser, system ($, render_licenses_menu_list')); add_submenu_page (wp licenser, __ (" tilføjer nye, $- > plugin_name), __ ("tilføjer nye, $- > plugin_name), edit_posts",", wp licenser nye" system ($, render_licenses_menu_new ')}, lad os tage et nærmere kig: ,,, linje 5 – 13: , skabe en øverste menu side, med titlen "licens".den funktion, add_menu_page, skal følgende parametre:,,, $page_title, titlen på menuen, side (http: //titel - værdi). , $menu_title,: på titel på menuen. side, $kapacitet: kapacitet, der kræves for at se den side.jeg plejede, edit_posts,, men i fremtiden, skal jeg nok overveje at tilføje en kapacitet på min egen i stedet.,, $menu_slug: id for menuen side, som anvendes i den side er url. $funktion: den funktion, der vil håndtere levering af menuen side. - icon_url: dette område kan anvendes på mange måder, men jeg valgte at gå med instrumentbrættet ikoner som forklaret ovenfor i denne forelæsning. $holdning: placering af menupunkt i wordpress menu.et problem med at bruge denne parameter er, at hvis to menu elementer har samme $holdning, værdi, er kun én af dem vil blive vist.i henhold til wordpress dokumentation ved hjælp af et decimaltal, som vi har gjort det her, hjælper lidt.,,, linje 15 – 22: tilføje en submenu opførelse af licenser.de parametre, add_submenu_page, ellers er de samme som for, add_menu_page, , men den første parameter bør være id for den øverste menu, som submenu bør tilføjes. , er også værd at bemærke, er, at vi den første submenu til samme funktion som øverste menu.hvad det betyder er, at når en bruger klik på øverste niveau menu, det første submenu er åbnet nu.,,, linjerne 24 – 31,: anden submenu er den, vi starter med, side for at tilføje et nyt kørekort. , for at gøre kodeksen løb uden