, sædvane efter type hjælper klasse,,,,, 1,,,,,,,,, 12,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss., for mange af wordpress projekter i disse dage, vi bruger skik post - typer.den wordpress udvikling hold skabte nogle praktiske metoder til at integrere dem i deres projekter.men når du bruger skik post - typer, taxonomies og meta - kasser tit, det er ret sandsynligt, at du kommer til at gentage sig selv.det er derfor, vi kommer til at bruge den magt, disse wordpress funktioner til at opbygge et stærkt hold, som vi kan bruge til hurtigt at registrere efter type, taxonomies og meta - kasser.,,, ring til vores klasse, det er sådan, vi kalder vores klasse, når det er gjort, omfatte ('custom-post-type. folkesundhedsprogrammet "); $bog = nye custom_post_type ('bog"); $bog - > add_taxonomy ("kategori"); $bog - > add_taxonomy (') '); $bog - > add_meta_box ('book info, system ('year = > tekst,'genre = > tekst); $bog - > add_meta_box ('author info, system ('name = > tekst,'nationality = > tekst,'birthday = > tekst), trin 1. klasse, egenskaber og metoder, vi starter med at skabeklasse, vigtigste egenskaber, konstruktøren og metoder.i denne lektion vi vil fylde dem med vores programmering logik. klasse custom_post_type {offentlige $post_type_name; offentlige $post_type_args; offentlige $post_type_labels; /* klasse konstruktøren * /offentlige funktion __construct() {} /* metode, der giver den efter type * /offentlige funktion register_post_type() {} /* metode til at fastgøre taksonomi til post - type * /offentlige funktion add_taxonomy() {} /* lægger meta - kasser til post - * /offentlige funktion add_meta_box() {} /* lytter til, når de efter type, der blev reddet * /offentlige funktion save() {}}, trin 2, konstruktøren inden for producenten, vi skaber nogle vigtige variables, som anvendes i hele klassen.vi kræver også, add_action, til at registrere efter type, og vi lytter til, når de efter type er blevet reddet, så vi kan redde vores post er meta - data.hvis det efter type findes, add_action, er ikke ringet, men de $post_type_name, er klar, så vi kan tilføje taxonomies og meta - kasser til. offentlige funktion __construct ($navn, $args = array() $etiketter = array()) (//nogle vigtige variabler $- > post_type_name = strtolower (str_replace ("," _, $navn)); $- > post_type_args = $args. $- > post_type_labels = $etiketter; //føje handling til at registrere efter type, hvis de efter type ikke allerede eksisterer, hvis!post_type_exists ($- > post_type_name)) (add_action ("lokalitet, system (& $, register_post_type ')} //lytte til save - efter klo $- > save();}, trin 3 register efter type i, register_post_type, metode, der bliver kaldt ved det, add_action, konstruktøren, vi først fastlægge navn (lave) og flertal.med dette navn og pluralistisk vi bygger vores etiketter til post - og træder i stedet for (og forene dem med den givne etiketter) fra $- > post_type_labels, variabel.så skaber vi vores argumenter med det samme princip, offentlig funktion register_post_type() (//capitilize ord og gøre det pluralistiske $navn = ucwords (str_replace ('_ "," "$- > post_type_name) $pluralistisk = $navn."s; //vi misligholdelse etiketter baseret på post - type, navn og pluralistisk.vi træder i stedet for dem med den givne etiketter.$etiketter = array_merge (//default system ('name = > _x ($flertal, efter type almindelige navn "),'singular_name = > _x ($navn," post - type enestående navn "),'add_new = > _x (" tilføjer nye, strtolower ($navn)),'add_new_item = > __ ("tilføje nye.$navn),'edit_item = > __ ("klippe".$navn),'new_item = > __ ("nye".$navn),'all_items = > __ ("alle".$flertal),'view_item = > __ ("lyset".$navn),'search_items = > __ ("leder".$flertal),'not_found = > __ ("nej".strtolower ($flertal).fandt "),'not_found_in_trash = > __ (" nej ".strtolower ($flertal).fandt i skraldespanden, "),'parent_item_colon = >",'menu_name = > $flertal) //givet etiketter $- > post_type_labels); //efter samme princip som etiketter.vi sætter en misligholdelse og træder i stedet for dem med den givne argumenter.$args = array_merge (//default system (»mærket« = > $flertal,'labels = > $etiketter, offentligt = > sandt,'show_ui = > sandt,'supports = > system (afsnit, redaktør "),'show_in_nav_menus = > sandt,'_builtin = > falske) //givet args $- > post_type_args); //register efter type register_post_type ($- > post_type_name, $args)}, trin 3 tilføje nogle taxonomies, vi først undersøge, om de $navn, parameter er tomme.når det er, vi gør ingenting.når det ikke er det, skaber vi tre variabler, hvor vi opbevarer oplysninger om taksonomi: $taxonomy_name, $taxonomy_labels og $taxonomy_args,., offentlig funktion add_taxonomy ($navn, $args = array() $etiketter = array()) (hvis (!tom ($navn)) (//, vi har brug for at vide, efter type, navn, så de nye taksonomi kan være knyttet til det.$post_type_name = $- > post_type_name; //taksonomi egenskaber $taxonomy_name = strtolower (str_replace ("," _, $navn)); $taxonomy_labels = $etiketter; $taxonomy_args = $args; /* mere kode kommer * /), efter at vi har gjort den første kontrol og så sæt nogle variabler, skal vi registrere efter type.men vi først undersøge, om de taksonomi allerede eksisterer. hvis (!taxonomy_exists ($taxonomy_name) {* skabe taksonomi og knytte det til objekttype (efter type) * /} andre {/* taksonomien findes allerede.vi sætter den eksisterende taksonomi til objekttype (efter type) * /}, hvis taksonomien findes ikke, registrerer vi det.vi bruger en, add_action,, men ikke på normal vis.normalt, det andet parameter i den, add_action, er navnet på en funktion, men eftersom vi bruger forskellige parametre, hver gang, vi skal vedtage en navnløs funktion (nb: denne funktion kræver på 5. 3 +) og bruger, use(), funktion.med det, use(), funktion, kan vi give variabler til de navnløse funktion.denne gang skal vi vedtage, $taxonomy_name, $post_type_name og $taxonomy_args, til at registrere taksonomi. //capitilize ord og gøre det pluralistiske $navn = ucwords (str_replace ('_ "," "$navn)); $pluralistisk = $navn."s; //default etiketter, træder i stedet for dem med den givne etiketter.$etiketter = array_merge (//default system ('name = > _x ($flertal, taksonomi almindelige navn "),'singular_name = > _x ($navn, taksonomi enestående navn"), search_items = > __ ("leder".$flertal), all_items = > __ ("alle".$flertal), parent_item = > __ ("modervirksomhed".$navn), parent_item_colon = > __ ("modervirksomhed".$navn. ":), edit_item = > __ ("klippe".$navn), update_item = > __ ("ajourføring.$navn), add_new_item = > __ ("tilføje nye.$navn), new_item_name = > __ ("nye".$navn. "betegnelsen "), menu_name = > __ ($navn)) //givet etiketter $taxonomy_labels); //default argumenter er overskrevet med givet argumenter $args = array_merge (//default system (»mærket« = > $flertal,'labels = > - etiketter, offentligt = > sandt,'show_ui = > sandt,'show_in_nav_menus = > sandt,'_builtin = > falske) //givet $taxonomy_args); //tilføje taksonomi til post - add_action (" lokalitet, function() anvendelse ($taxonomy_name $post_type_name, $args) (register_taxonomy ($taxonomy_name, $post_type_name, $args)}), når taksonomien findes ikke, vi kun knytte det til vores post - type.ligesom før, vi bruger en navnløs funktion og, use(), funktion.vi behøver kun at give $taxonomy_name og $post_type_name,., add_action ("lokalitet, function() anvendelse ($taxonomy_name, $post_type_name) (register_taxonomy_for_object_type ($taxonomy_name, $post_type_name)}), trin 4 meta - kasser, til registrering af meta - kasser, vi har brug for post - navn så vi afgøre.efter det, vi har brug for nogle variabler for meta - kasse selv, og vi får skik meta - områder globalt, så vi kan få adgang til dem i red hook.vi vil ikke dække for meget i detaljer her, fordi tammy hart gjort en meget nyttig lektion om genbrugsemballage meta - kasser. offentlige funktion add_meta_box ($titel, $områder = array() $forbindelse = »normal«, $prioriterede = misligholdelse) (hvis (!tom ($titel)) (//, vi har brug for at vide, efter type hed $post_type_name = $- > post_type_name; //meta - variabler $box_id = strtolower (str_replace ("," _, $afsnit) $box_title = ucwords (str_replace ('_ "," "- afsnit) $box_context = $sammenhæng; $box_priority = $prioritet; //gøre områderne globale globale $custom_fields. $custom_fields [$titel] = $områder /* mere kode kommer * /}}, når vi fastsætter de variabler og globals, registrerer vi meta - æske med en, add_action,.ligesom før, vi bruger en navnløs funktion.denne gang har vi brug for $box_id, $box_title, $post_type_name, $box_context, $box_priority og - områder. add_action ('admin_init, function() anvendelse ($box_id, $box_title, $post_type_name, $box_context, $box_priority $) (add_meta_box ($box_id, $box_title, funktion ($post - data) (samlet $post; //pædofil inden for en validering wp_nonce_field (plugin_basename (__file__), custom_post_type); //få alle input fra $data $custom_fields = $data ['args'] [0]; //få reddet værdier $meta - = get_post_custom ($post - > id); //- system og loop gennem det, hvis (!tom ($custom_fields) {* loop gennem $custom_fields * /hver ($custom_fields som $etiket = > $type) ($field_id_name = strtolower (str_replace ("," _, $data ['id '])._ ".strtolower (str_replace ("," _, $etiket) echo '< etiket til = ".field_id_name dollars. "> ".$etiket.< /etiketten > < input type = "tekst" navn = "custom_meta [".field_id_name dollars. ""id =".field_id_name dollars. "værdi = ".$meta [$field_id_name] [0]. "/> "}}}, $post_type_name, $box_context, $box_priority, system ($));}), trin 5 - posts meta - data, medmindre alle post - meta - data.vi loop gennem dem, ved hjælp af den globale, $custom_fields,.det er også en hurtig dækning, jf. tammy hart er forelæsning om genbrugsemballage meta - kasser. offentlige funktion save() (//brug for post - hed $post_type_name = $- > post_type_name; add_action ('save_post, function() anvendelse ($post_type_name) (//benægte wordpress autosave funktion, hvis (jf. ('doing_autosave) & & doing_autosave) tilbage, hvis (!wp_verify_nonce ($_post ['custom_post_type "plugin_basename (__file__)) tilbage, globale $post; hvis (isset ($_post) & & isset ($post - > id) & & get_post_type ($post - > id) = = $post_type_name) (samlet $custom_fields; //loop gennem hver meta - kasse for hvert ($custom_fields som $afsnit = > $områder) (//loop gennem alle områder for hvert ($områder som $etiket = > $type) ($field_id_name = strtolower (str_replace (", "_, $afsnit)._ ".strtolower (str_replace ("," _, $etiket)); update_post_meta ($post - > id $field_id_name, $_post ['custom_meta '] [$field_id_name]);}}}})}, trin 6 optimere, som du kan se, vi bruger, strtolower (str_replace (' "'_, $snor)), og ucwords (str_replace (' _", "" $snor)), et antal gange.grunden til, at denne gruppe er, at vi ikke gentager os selv, vi ønsker ikke at gøre det i denne del.det er derfor, vi skaber nogle hjælper metoder.på den måde kan vi gøre dette: $navn = selvstændig: smukkesér ($snor); i stedet for $navn = strtolower (str_replace ("," _, $afsnit), offentlige statisk funktion smukkesér ($serie) (tilbage ucwords (str_replace ('_ "," $snor)} offentlige statisk funktion uglify ($serie) (tilbage strtolower (str_replace ("," _, $snor)}, et andet punkt er de pluralistiske former, vi skaber.vi skaber dem ved at tilføje et "s" til ordet.men hvad sker der, når det ender med et "y"?dette er grunden til, at vi skaber et hjælper metode til at bestemme en form for et ord.vi kan sagtens gøre det. $pluralistisk = selvstændig: pluralize ($snor) og flertal i form af vores ord vil blive fastlagt, offentlige statisk funktion pluralize ($serie) ($sidste = $snor [strlen ($snor) - 1]; hvis ($sidste = = 'y') ($skære = substr ($snor, 0 - 1); //konvertere til er $pluralistisk = $andel. "e.} andre (//bare lægger et s $pluralistisk = $snor.s'} tilbage $flertal.}, pakker, og nu er vi færdige.du kan nu anvende denne klasse til let register efter type, taxonomies og meta - kasser.hvis du har nogen forslag eller spørgsmål, bare en kommentar, så kan vi snakke om det.jeg håber, at vi ses næste gang.også jeg vil gerne give nogle kredit til jeffrey.jeg brugte hans klasse som inspiration til min klasse og for denne forelæsning.jeg vil også gerne give nogle kredit til tammy hart, for at opbygge de genanvendelige meta - kasser tutor.tag et kig på deres arbejde.