om fastsættelse af aktive navigation elementer, når wordpress ikke

, at aktive navigation elementer, når wordpress ikke,,,,, andel,,,,,,,, 20,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, wordpress gør et fremragende stykke arbejde med fokus på nuværende faste stillinger, sider eller taxonomies, når man medtager dem i navigation menu.men når man skaber en sædvane, post eller sædvane taksonomi alt går galt, og at den nuværende sejlads med side.heldigvis er der en chance for at arbejde, kan du manuelt angive, hvilken menu element fremhæves, når du viser skik indhold.,,,,,,, hvordan det kommer til at fungere, er løsningen enkel.vi har skrevet et par linjer kode, der skaber en indstillinger side var du vil angive menu elementer til at fremhæve for hver skik content type.det næste skridt er at omgå misligholdelse wordpress navigation walker klasse til at generere en fremhæve klasse, når det er nødvendigt.enkle og effektive.,, trin 1, etablere og anvende en sædvane omfatter fil, skabe en ny filen, navigation.php, og omfatter det fra, functions.php, fil. include_once (get_template_directory(). "/navigation. folkesundhedsprogrammet), nu er vi klar til at starte med den rigtige kode.,, trin 2, at skabe miljøer, side, for det første registrering af et nyt indstillinger gruppe på at skabe en ny wp admin indstillinger side.i dit tomme, navigation.php, fil indsættes følgende kode. add_action ('admin_init "," ns_register_navigation_settings); funktion ns_register_navigation_settings() {register_setting (' ns_navigation "," ns_navigation_predefined_values)}, vil skabe en ny menu element til at få adgang til vores nye indstillinger side i wp admin., add_action ('admin_menu "," ns_navigation_options'); funktion ns_navigation_options() {add_submenu_page ("emner. folkesundhedsprogrammet", "foruddefinerede menuer, forud definerede menuer, edit_theme_options", "menu misligholdelser, menu_defaults_page)}, menu_defaults_page(), funktion fingeraftryk indstillingerne side i wordpress administration.før grafisk form input, get_option ('ms_navigation_predefined_values), anmoder de værdier, lagres i databasen og lagrer dem i $ns_navigation_predefined_values, som et system. i dette tilfælde er der ikke opbevares, så de værdier, er tomme.ved hjælp settings_field(), er påkrævet for trykning af beslægtede og krævede skjult områder og for sikkerhed, håndtering.resten fingeraftryk input elementer, ved hjælp af værdierne i $ns_navigation_predefined_values,., indstillingerne side nu er til rådighed, men tom.vi er nødt til at forsyne den med alle til rådighed stående skik stillinger og taxonomies, der er blevet skabt, og de tilgængelige menu elementer til at matche disse værdier.indsæt følgende kode., funktion menu_defaults_page() {?> < div klasse = "pakke" > < div klasse = "icon32" id = "ikon muligheder generelt" > < br > < /div > < h2 > <?folkesundhedsprogrammet aspektet _e ('predefined menuer for skik stillinger og taksonomier«)?> < /h2 > < form metode = "post" action = "muligheder. på" > <?php $ns_navigation_predefined_values = get_option ('ns_navigation_predefined_values'); settings_fields ('ns_navigation)?> < h3 klasse = 1 > <?folkesundhedsprogrammet aspektet _e ('pages)?> < /h3 > < tabel klasse = "bord" cellpadding = "0" cellspacing = "0" > <?php hver (ns_get_post_types() som $k = > $v) {?> < tr valign = "top" > < det omfang = "ro" > <?php echo $5?> < /t > < td > <?php $current_dropdown_value = get_option ('ns_navigation_predefined_values'); wp_dropdown_pages (array ("navn" = > ns_navigation_predefined_values [".$k. "] «, echo "= > 1, show_option_none = > __ (" & mdash; udvælge & mdash; "), option_none_value = >" 0 "," udvalgt "= > $current_dropdown_value [k] $).> < /td > < /tr > <?folkesundhedsprogrammet)?> < /tabel > <?folkesundhedsprogrammet (ns_get_taxonomies()):?> < br /> < den højtstående repræsentant /> < h3 klasse = 1 > <?folkesundhedsprogrammet aspektet _e ('categories)?> < /h3 > < tabel klasse = "bord" cellpadding = "0" cellspacing = "0" > <?php hver (ns_get_taxonomies() som $k = > $v) {?> < tr valign = "top" > < det omfang = "ro" > <?php echo $5?> < /t > < td > <?php $current_dropdown_value = get_option ('ns_navigation_predefined_values'); wp_dropdown_pages (array ("navn" = > ns_navigation_predefined_values [".$k. "] «, echo "= > 1, show_option_none = > __ (" & mdash; udvælge & mdash; "), option_none_value = >" 0 "," udvalgt "= > $current_dropdown_value [k] $).> < /td > < /tr > <?folkesundhedsprogrammet)?> < /tabel > <?folkesundhedsprogrammet aspektet endif;?> < p - klassen = "stille" > < input type = "stille" klasse = "" primære "værdi =" <?folkesundhedsprogrammet aspektet _e ('update)?> "/> < /p > < /form > < /div > <?php}, indstillingerne side nu er oprettet, men vi er stadig nødt til at definere funktionerne i koden.indsæt følgende kode., funktion ns_get_post_types() ($post_types = get_post_types (array (»tâches = > sandt, _builtin = > falske), "objekter"); for hvert ($post_types som $k = > $v) ($ns_registered_post_types - > $k = $v - > etiketter - > navn} tilbage $ns_registered_post_types;} funktion ns_get_taxonomies() ($taxonomies_types = get_taxonomies (array (»tâches = > sandt, _builtin = > falske), "objekter"); for hvert ($taxonomies_types som $k = > $v ($) ns_registered_taxonomies_types - > $k = $v - > etiketter - > navn} tilbage $ns_registered_taxonomies_types;}, funktion, ns_get_post_types, får alle, der er til rådighed efter type og output, kun de, der er sædvane.den funktion, ns_get_taxonomies, gør det samme, men for taxonomies selvfølgelig.,, trin 3 at arbejde i wordpress tema, vi har de indstillinger, side erklæret og få skik stillinger og taxonomies erklæret.det næste skridt er at få det til at fungere i det tema, vi bruger.for testning, vi arbejder med wordpress 20 11 tema, men denne kode bør arbejde med et emne. lad os ændre wordpress menu walker klasse til at tilsidesætte de standard output.vi læser vores indstillinger og anvende de værdier for at tilføje en ny, current_page_item ns_current_page_item, klasse i den pågældende side, når vi er der tradition efter loop eller tilknyttede fælles side. klasse ns_walker_nav_menu udvider walker_nav_menu {funktion start_el (& $output, $på $dybde, $args) (samlet $wp_query; $led = ($dybde)?str_repeat (", ikke" $dybde): « hvis (isset ($args - > current_nav_element)) ($current_nav_element = $args - > current_nav_element;} $class_names = $værdi = ". $klasser = tomme ($post - > klasser).array(): (array) $post - > klasser; $klasser [] = menupunkt - ".- post - > id. $klasser [] = page gui - ".- post - > object_id. $class_names = tilslutte sig (", apply_filters ('nav_menu_css_class, array_filter ($klasser), $på $args) $class_names = klasse =".esc_attr ($class_names); hvis ($current_nav_element = = $post - > object_id) ($class_names. = current_page_item ns_current_page_item "} $class_names. =" "$id = apply_filters ('nav_menu_item_id", "menupunkt -".- post - > id $på $args); $id = strlen ($id)? «id = ".esc_attr ($id). """. $produktion. = $led."< li '.- id.$værdi.$class_names. > "$attributter =!tom ($post - > attr_title)? «afsnit = ".esc_attr ($post - > attr_title). '"": "" $attributter. =!tom ($post - > mål)? «mål = ".esc_attr ($post - > målet). '"": "" $attributter. =!tom ($post - > xfn)? «forhold = ".esc_attr ($post - > xfn). '"": "" $attributter. =!tom ($post - > url).href = ".esc_attr ($post - > url). '"": "" $item_output = $args - > før. $item_output. = < ".$attributter. >. $item_output. = $args - > link_before.apply_filters ('the_title, $post - > titel, $post - > id).$args - > link_after. $item_output. = < /a >. $item_output. = $args - > efter; $produktion. = apply_filters ('walker_nav_menu_start_el, $item_output $på $dybde, $args)), nye ns_walker_nav_menu, klassen læser navigation værdier, opbevares i et system inden trykningen.i dette tilfælde med en, if(), kontrolstruktur for at vurdere, om de nuværende sejlads element, svarer til de foregående lagret værdi til side wordpress er i øjeblikket trykning.hvis den betingelse, er sandt, så de klasser "current_page_item" og "ns_current_page_item" føjes til de eksisterende klasser opbevares i $class_names, variable. så vi skal bruge en skik funktion.når vi kalder det, denne funktion vil trykke menu i tema, funktion ns_wp_nav_menu ($args) (samlet $post. $ns_walker = nye ns_walker_nav_menu(). $args ['walker '] = $ns_walker. $ns_navigation_predefined_values = get_option ('ns_navigation_predefined_values. $custom_post_type = get_post_type ($post); $available_post_types = (mængde) ns_get_post_types(). $taxonomy_type = get_queried_object(). $taxonomy_type = $taxonomy_type - > taksonomi. $available_taxonomy_types = (array) ns_get_taxonomies(); hvis (is_singular ($custom_post_type) & & array_key_exists ($custom_post_type, $available_post_types)) ($args ['current_nav_element'] = (function_exists ('icl_object_id ")?icl_object_id ($ns_navigation_predefined_values [$custom_post_type], side '): $ns_navigation_predefined_values [$custom_post_type]} elseif (is_tax ($taxonomy_type) & & array_key_exists ($taxonomy_type, $available_taxonomy_types)) ($args ['current_nav_element'] = (function_exists ('icl_object_id ')?icl_object_id ($ns_navigation_predefined_values [$taxonomy_type], side '): $ns_navigation_predefined_values [$taxonomy_type]} andre {frakoblet ($args ['current_nav_element']);} wp_nav_menu ($args)}, ns_wp_nav_menu(), er skabt for at forenkle anvendelsen af den indbyggede wp_nav_menu().det første skridt er at tvinge den funktion, at lade den nye walker klasse ved hjælp af $ns_walker = nye ns_walker_nav_menu(), og at de parametre, system med $args ['walker '] = $ns_walker,,., i stedet for altid, at de krævede parametre for funktion det er medtaget for misligholdelse.i dette særlige tilfælde funktion læser nuværende stilling og læser oversat side, hvis wpml stik af mulighed for på deres wordpress websted. først vurdere, om den fælles holdning, der er i side, is_singular(), og komme fra databasen tilsvarende lagret værdi.den anden mulighed for at evaluere, hvis den nuværende side er en taksonomi søgning ved hjælp is_tax(),.hvis ikke, så er der ikke noget at udvælge og koden frigiver den nuværende sejlads element med frakoblet ($args ['current_nav_element ']), trin 4 trykning sejlads menu i en wordpress tema, åbne, header.php, fil i din 20 11 tema, finder den, wp_nav_menu(), funktion, omtrent på linje 118 og erstatte dem med, ns_wp_nav_menu, holder de samme parametre og intet andet, fordi den nye funktion tager sig af resten af de krævede parametre ved misligholdelse.den nye kodeks skal se sådan ud:, <?folkesundhedsprogrammet aspektet ns_wp_nav_menu (array ('container_class = > "," theme_location = > "primær").> denne funktion, bruger de samme argumenter som standard, wp_nav_menu, fungerer så føle sig fri til at ændre så meget som du ønsker eller behov., åben, style.css, og erstatte den kode på linje, 617 med:,&#adgang. nuværende menupunkt > en,&#nuværende adgang. menu - forfader > en,&#adgang. current_page_item > en,&#adgang. current_page_ancestor > en,&#adgang. ns_current_page_item > en {skrifttype vægt: dristigt.}, løntrin 5 får mest fra din forstærkede navigationssystem, du har skik stillinger, skik taxonomies og du har skabt nye sider med modeller for at vise de skik loops.du har nok skabt en ny menu i din wp administration og tilføjede de sider.åben den foruddefinerede menuer indstillinger side befinder sig under udseende og de udvalgte sider for hvert skik post og taksonomi, du har skabt, hvor du viser den sædvane, post eller den fælles side i forbindelse med denne skik post sejlads vil fremhæve de matchede menu element.,, konkludere, at der er mange måder at nå det samme resultat, men efter et par udsendt projekter med denne tilgang, jeg fandt det her er den bedste og mest brugervenlige. men dette er kun begyndelsen af alle de muligheder, de kan opnå, når du forstår denne kode, og lave ændringer i deres personlige behov. jeg opfordrer dig til at holde forskning om sejlads walker klasse.der er mange muligheder gemt der, kan du vædde på det.




Previous:
Next Page: