sådan skal de bruge radio knapper med taxonomies

, hvordan man bruger radio knapper med taxonomies,,,,, 1,,,,,,,,, 6,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, wordpress "skik taksonomi elementer er fantastisk, som gør det muligt at organisere deres stillinger i forskellige taxonomies, med alt det hårde arbejde, der er gjort for dig.men det kan også være lidt senert.når redigering deres stillinger, din taksonomi forhold har deres egne metabox, og de optræder som afkrydsningsfelt liste (for hierarchal taxonomies) eller som en brik sky (for ikke - hierarchal taxonomies).det er dine to valg. det kan være et problem, når man ønsker at sikre en sigt kun kan vælges for hver enkelt post.selvfølgelig, du kunne skaffe i, save_post, klo, og at fjerne alle de store ord, men det er ikke særlig brugervenlig og bestemt ikke yder en stor brugergrænseflade.nogle gange, ville det bare være mere æstetisk ønskeligt at forelægge deres taxonomies på en anden måde.denne artikel vil vise dig, hvordan du gør det, og den kode, vi taler om, skal lægges til, functions.php, fil i dit område.vi skal fokusere på radio knapper, men du kan bruge andre input - metode, f.eks. en ud menu.,,, trin 1 fjerne misligholdelse taksonomi metabox, wordpress automatisk taksonomien metabox, så vores første opgave er at fjerne det, så vi kan skabe vores egen i stedet.jeg vil påtage os vores taksonomi navn er "mytaxonomy" (hvis du ville ændre wordpress "mærker eller kategorier metabox, du vil erstatte det med" kategori "eller" post_tag '). for at fjerne metabox, vi vil bruge, remove_meta_box,, som kaldes inde fra en funktion hooked på, admin_menu,.det, remove_meta_box, accepterer tre argumenter.,, id: dette id - attribut til div element, der indeholder metabox.normalt ville det være "mytaxonomydiv for hierarchal taxonomies, eller tagsdiv mytaxonomy for ikke - hierarchal.,, efter type: efter type metabox synes for (f.eks." post "eller" side "osv.).hvis din metabox forekommer i flere forskellige post - typer, du bliver nødt til at ringe til remove_meta_box funktion for hver.,, sammenhæng: normal, avancerede eller side.,, add_action ('admin_menu "," myprefix_remove_meta_box); funktion myprefix_remove_meta_box() {remove_meta_box ('mytaxonomydiv "," post "," normale ");}, trin 2 tilføje din egen metabox, mødes vi på et rammende navn, add_meta_boxes, krog med en funktion, som vil tilføje vores metabox.for at gøre den funktion, add_meta_box, der tager flere argumenter, bl.a.:,, id: samme som ovenfor, giver det noget unikt.,, afsnit: afsnit for metabox.,, opkald: navnet på den funktion, som vil give vores metabox er indvolde.,, efter type: samme som ovenfor.igen, du får brug for at kalde denne funktion til hver post type separat.,, sammenhæng: samme som ovenfor.,, prioritet: prioriterede inden for den sammenhæng, hvor de kasser skal vise. //tilføje nye taksonomi meta - rubrik add_action ('add_meta_boxes "," myprefix_add_meta_box); funktion myprefix_add_meta_box() {add_meta_box (' mytaxonomy_id "," min radio taksonomi,'myprefix_mytaxonomy_metabox,'post,'side,'core)} funktion myprefix_mytaxonomy_metabox ($post) (echo, det er min taksonomi metabox '}, sammen, de ovenfor, bør fjerne misligholdelse metabox og erstatte det med din egen, der i øjeblikket ikke noget men - den besked, "det er min taksonomi metabox".det næste skridt er at ændre denne funktion er at vise, hvad vi vil have.,, trin 3, der producerer radioen knapper, ønsker vi, at vores metabox se og opføre sig så meget som en misligholdelse metaboxes som muligt.at forske i wordpress centrale filer, du vil finde det sted, hvor en metabox er indvolde er produceret, her.vores skik funktion under vil efterligne den centrale funktion, men med nogle ændringer til, hvordan vores forhold er udstillet. lad os gå igennem vores funktion, lidt ad gangen.den første del indeholder nogle af variablerne.du har virkelig brug for at ændre, $taksonomi, variabel til at matche din taksonomi navn.bemærk også, $navn, variabel.vi giver input områder navn, tax_input [mytaxonomy].det navn for input i misligholdelse metabox.ved at gøre dette, wordpress automatisk vil håndtere ajourføring af en posts taksonomi sigt. //oprettet taksonomi formål og få hensyn $taksonomi = mytaxonomy. $skat = get_taxonomy ($taksonomi); //det er taksonomi formål //navn form $navn = tax_input [".$taksonomi. "]; //får alle de betingelser for denne taksonomi $hensyn = get_terms ($taksonomi, system ('hide_empty = > 0), vil vi have id - efter den nuværende mandatperiode (vi venter kun en). $postterms = get_the_terms ($post - > id $taksonomi); $nuværende = ($postterms?array_pop ($postterms): falske); $nuværende = ($nuværende?$nuværende - > term_id: 0), hvis man ser på, wordpress "kategori metabox, vil i se et tab, som vil vise den mest anvendte vilkår.til gengivelse af det, vi har brug for de 10 mest populære udtryk.vi bruger den, get_terms, fungere igen, men denne gang udvælgelse af højst 10 vilkår og beordrede grev (antallet af stillinger, der er denne taksonomi). $populære = get_terms ($taksonomi, system ('orderby = > "greven", "orden" = > desc "" nummer "= > 10, hierarkisk = > falske), næste, vi ønsker at vise de alle kategorier og mest anvendte" tabs (det er bedste praksis at anvende taksonomi etiketter, hvor det er muligt).hvis du ikke vil have mere, du kan fjerne denne del:, <!- display tabs - > < ul id = "<?php echo $taksonomi;?> - øje "klasse =" øje "> < li klasse =" øje "> < en href ="&#<?php echo $taksonomi;?> - "tabindex =" 3 "> <?php echo $afgift - > etiketter - > all_items;?> < /a > < /li > < li klasse = "gemme sig, hvis der ikke er" > < en href = "# <?php echo $taksonomi;?> - - "tabindex =" 3 "> <?folkesundhedsprogrammet aspektet _e ("de fleste").> < /a > < /li > < /ul >, vi vil have det til at vise, hvor vi er på alle kategorier 'regning:, <!- display taksonomi vilkår - > < div id = "<?php echo $taksonomi;?> - klasse = "tabs panel" > < ul id = "<?php echo $taksonomi;?> checkliste "klasse =" liste: <?php echo $taksonomi?> categorychecklist form, ingen klare "> <?folkesundhedsprogrammet for hvert ($vilkår som $term) {$id = $taksonomi. "-". $term - > term_id, echo "< li id =" $id« > < mærke klasse ='selectit ">", echo "< input type = træffer" id = »in - id 'navn = {navn} "dollars". kontrolleret ($nuværende - begreb - > term_id, falske). "værdi = $term - > term_id /> usd term - > navn < br />", echo "< /etiketten > < /li >").> < /ul > < /div > det er virkelig bare at vise en liste i en div element, og hver liste element er en radio mulighed.selvfølgelig kan du simpelthen erstatte listen med en ud menu eller noget andet, som du kan lide, nu gør vi det samme for de mest anvendte 'regning:, <!- display - populære taksonomi vilkår - > < div id = "<?php echo $taksonomi;?> - pop "klasse =" tabs panel "stil =" display: ingen; "> < ul id =" <?php echo $taksonomi;?> checkliste pop "klasse =" categorychecklist form, ingen klare "> <?folkesundhedsprogrammet for hvert ($populær som $term) {$id = "folkelige -. $taksonomi." - ". $term - > term_id, echo" < li id = "$id« > < mærke klasse ='selectit" > ", echo" < input type = træffer "id = »in - id«." kontrolleret ($nuværende - begreb - > term_id, falske). "værdi = $term - > term_id /> usd term - > navn < br />", echo "< /etiketten > < /li >").> < /ul > < /div >,, løntrin 4 vores fuldstændige callback funktion, stykke det sammen, og vores fulde funktion er, //callback til at oprette metabox funktion myprefix_mytaxonomy_metabox ($post) (//få taksonomi og vilkår $taksonomi = "mytaxonomy"; //oprettet taksonomi formål og få hensyn $skat = get_taxonomy ($taksonomi); $hensyn = get_terms ($taksonomi, system ('hide_empty = > 0)); //navn på form $navn = tax_input [".$taksonomi. "]; //komme løbende og populær form $populære = get_terms ($taksonomi, system ('orderby = > "greven", "orden" = > "desc", "nummer" = > 10, hierarkisk = > falske) $postterms = get_the_terms ($post - > id $taksonomi); $nuværende = ($postterms?array_pop ($postterms): falske); $nuværende = ($nuværende?$nuværende - > term_id: 0).> < div id = "taksonomi - <?php echo $taksonomi;?> "klasse =" categorydiv "> <!- display tabs - > < ul id = "<?php echo $taksonomi;?> - øje "klasse =" øje "> < li klasse =" øje "> < en href ="&#<?php echo $taksonomi;?> - "tabindex =" 3 "> <?php echo $afgift - > etiketter - > all_items;?> < /a > < /li > < li klasse = "gemme sig, hvis der ikke er" > < en href = "# <?php echo $taksonomi;?> - - "tabindex =" 3 "> <?folkesundhedsprogrammet aspektet _e ("de fleste").> < /a > < /li > < /ul > <!- display taksonomi vilkår - > < div id = "<?php echo $taksonomi;?> - klasse = "tabs panel" > < ul id = "<?php echo $taksonomi;?> checkliste "klasse =" liste: <?php echo $taksonomi?> categorychecklist form, ingen klare "> <?folkesundhedsprogrammet for hvert ($vilkår som $term) {$id = $taksonomi. "-". $term - > term_id, echo "< li id =" $id« > < mærke klasse ='selectit ">", echo "< input type = træffer" id = »in - id 'navn = {navn} "dollars". kontrolleret ($nuværende - begreb - > term_id, falske). "værdi = $term - > term_id /> usd term - > navn < br />", echo "< /etiketten > < /li >").> < /ul > < /div > <!- display - populære taksonomi vilkår - > < div id = "<?php echo $taksonomi;?> - pop "klasse =" tabs panel "stil =" display: ingen; "> < ul id =" <?php echo $taksonomi;?> checkliste pop "klasse =" categorychecklist form, ingen klare "> <?folkesundhedsprogrammet for hvert ($populær som $term) {$id = "folkelige -. $taksonomi." - ". $term - > term_id, echo" < li id = "$id« > < mærke klasse ='selectit" > ", echo" < input type = træffer "id = »in - id«." kontrolleret ($nuværende - begreb - > term_id, falske). "værdi = $term - > term_id /> usd term - > navn < br />", echo "< /etiketten > < /li >").> < /ul > < /div > < /div > <?php}, løntrin 5 lidt javascript... var jeg forsigtig i mit navn til id og radio knapper i denne funktion.hvis du prøver på alle ovennævnte nu, vil du opdage, at wordpress automatisk behandler ajourføring af post - vilkår.desuden wordpress "javascript automatisk behandler det tekniske vurderingsorgan, navigation.der er et lille problem."alle kategorier" radio knapper ikke er i harmoni med den mest anvendte.hvis du har besluttet at gøre op med den mest anvendte 'regning, så du kan se bort fra denne afdeling.vi skal lige tilføje en lille smule af javascript at ordne denne sag. ønsker vi at tilføje lidt javascript til side, så i vores callback funktion, vil vi bruge en krog, at brande, når javascript indsættes i administrationen.det er det, admin_enqueue_scripts, hook.da vi tilføje vores funktion på krog i vores callback funktion, er det kun ladt, når det er nødvendigt.bare tilføje denne linje på toppen af vores callback funktion ovenfor:, add_action ('admin_enqueue_scripts,'myprefix_radiotax_javascript), når de javascripts lastes i den administrative side, vil det udløse vores funktion.denne funktion omfatter andet og mere end register og enqueue vores javascript, som vi vil have i meter:, funktion myprefix_radiotax_javascript() {wp_register_script ('radiotax, get_template_directory_uri(). "/er /radiotax. js, system ('jquery '), er sandt); //vi specificeres rigtigt her at fortælle wordpress manuskriptet skal være lastet i meter wp_enqueue_script (' radiotax)}, for javascript, vi faktisk har brug for, og skabe en fil i dit tema, er, mappe.vi kalder det, radiotax. js, og her er koden til at sætte ind, jquery (dokument). klar (funktion ($) {var taksonomi = mytaxonomy. $('# + taksonomi + "checkliste li: radio,&#+ taksonomi +" checkliste pop: radio ".), lever (' klik ', function() {var t = $(det), c = t.is (": kontrolleret), id = t. val(). $('&#+ taksonomi + "checkliste li: radio,&#+ taksonomi +" checkliste pop: radio). kom ('checked "falsk); $('# i - + taksonomi + - + id + «,&#populært - + taksonomi + - + id)." ("kontrolleret, c)})}), så hvad vil de få linjer?når du ser en radio på det unchecks alle andre (på begge stropper) og derefter kontrollerer radio knapper, der svarer til det udtryk.,, indgåelse, og med, at vi er færdige.wordpress klarer resten til os.der er plads til forbedring.hvad med at tilføje nye vilkår?jeg har ommitted fra vores metabox, for det er faktisk meget vanskeligt at gøre.det ville være meget mere javascript og også en smule handling på serveren.,, ajourføre:, som ønsket af roberto, her er en forbindelse til koden i fuld github.det er en klasse på gennemførelsen af den kode, der er anvendt i denne forelæsning, så at komme i gang, skal du behøver kun at ændre klasse 'statisk variabler i toppen.



Previous:
Next Page: