Regissør:
Sjanger: ID, 'movie_reviews_movie_genre', ');?>
Vurdering: '; annet echo ''; ?>
Før du går inn i denne opplæringen, vennligst gå gjennom min første veiledning på egendefinerte innleggstyper, der jeg har forklart noen av de viktige aspektene ved CPT (tilpassede innleggstyper). I denne opplæringen skal vi utforske mer om denne fantastiske funksjonen i WordPress.
Denne opplæringen dekker hvordan du oppretter egendefinerte taksonomier, administrasjonskolonner, taksonomifiltre og en arkivside for CPT. Så la oss begynne.
Taxonomier er en fin måte å gruppere ting sammen og hjelpe oss med å søke innlegg som tilhører en bestemt gruppe. I WordPress bruker vi generelt kategorier og merker som taksonomier. Trinnene som er gitt nedenfor, forklarer hvordan du oppretter egendefinerte taksonomier for CPT.
Åpne pluginfilen din, i vårt tilfelle Film-Reviews.php og legg til følgende kode for å registrere den egendefinerte funksjonen.
add_action ('init', 'create_my_taxonomies', 0);
funksjon create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews', array ('labels' => array ('name' => 'Filmgenre', 'add_new_item' => 'Legg til ny filmgenre', 'new_item_name' = > "New Movie Type Genre"), 'show_ui' => true, 'show_tagcloud' => false, 'hierarchical' => true));
Her register_taxonomy
funksjon gjør alt det harde arbeidet med å skape en tilpasset taksonomi (i vårt tilfelle en kategori) med navnet 'movie_reviews_movie_genre
'for den egendefinerte innleggstypen'filmanmeldelser
'. Etikettene definerer de forskjellige strengene som brukes i administrasjonsdelen av taksonomien.
'show_ui' => true
brukes til å gjøre taksonomiditoren synlig i dashbordet.'show_tagcloud' => false
avkod hvorvidt tagskyen skal være synlig. I vårt tilfelle er den deaktivert.'hierarkisk' => sant
dekoder formatet til den egendefinerte taksonomien.Merk: 'hierarkisk' => falsk
konverterer kategoriene til koder.
Etter lagring av Film-Reviews.php fil, åpne din egendefinerte malfil, i vårt tilfelle single-movie_reviews.php og legg til følgende fremhevet kode for å gjøre kategoriene synlige i våre innlegg.
'movie_reviews',); $ loop = ny WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>> Tittel:
Regissør:
Sjanger: ID, 'movie_reviews_movie_genre', ');?>
Vurdering: '; annet echo ''; ?>
Her har vi lagt til en tilpasset taksonomi 'Movie Genre' i våre filmanmeldelser CPT. Nå kan vi legge til nye kategorier fra administrasjonspanelet og tildele hver av dem til CPT.
I WordPress admin CPT-oppføringssiden finnes det to kolonner som standard - Dato og kommentarer - der vi kan sortere disse CPT-elementene. For å legge til ekstra kolonner og sortering, følg trinnene nedenfor.
Åpne pluginfilen Film-Reviews.php og legg til følgende linje med kode for å registrere en funksjon som skal ringes når filmoversiktens oppføringsside blir utarbeidet.
add_filter ('manage_edit-movie_reviews_columns', 'my_columns');
Her har vi brukt det variable filteret manage_edit- (Custom_Post_Type) _columns
, som passerer kolonnelisten over CPT som et argument for funksjonen.
funksjon my_columns ($ kolonner) $ kolonner ['movie_reviews_director'] = 'Regissør'; $ kolonner ['movie_reviews_rating'] = 'Rating'; unset ($ kolonner ['comments']); returnere $ kolonner;
Her har vi lagt til to kolonner: Regissør og Vurdering i administrasjonspanelet til CPT og slettet også kolonnen Kommentarer fra oppføringen.
Registrer en funksjon for å fylle ut kolonnene.
add_action ('manage_posts_custom_column', 'populate_columns');
funksjonen populate_columns ($ kolonne) if ('movie_reviews_director' == $ kolonne) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); ekko $ movie_director; elseif ('movie_reviews_rating' == $ kolonne) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); ekko $ movie_rating. ' stjerner';
Her siden funksjonen blir utført når noen av CPT-kolonnene blir gjengitt, kontrollerer den for de forespurte kolonnene før de ekko dem. Vi har brukt get_the_ID ()
funksjon for å hente indeksen for den nåværende raden og deretter i sin tur har brukt get_post_meta
for å hente dataene i kolonnen.
La oss nå registrere en funksjon som skal kalles når WordPress identifiserer sorterbare kolonner i CPT.
add_filter ('manage_edit-movie_reviews_sortable_columns', 'sort_me');
funksjon sort_me ($ kolonner) $ kolonner ['movie_reviews_director'] = 'movie_reviews_director'; $ kolonner ['movie_reviews_rating'] = 'movie_reviews_rating'; returnere $ kolonner;
Denne funksjonen identifiserer to kolonner for å gjøre dem sorterbare og returnerer deretter arrayet. Men vårt arbeid er ikke ferdig ennå.
add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); funksjon column_orderby ($ vars) if (! is_admin ()) returner $ vars; $ vars = array_merge ($ vars, array ('meta_key' => 'movie_director', 'orderby' = ' > 'meta_value')); elseif (isset ($ vars ['orderby']) && 'movie_reviews_rating' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_rating' => 'meta_value_num')); returner $ vars;
Ovennevnte funksjon er knyttet til forespørselsfilteret og legger til elementer i spørringsarrayet, basert på variablene i forespørselsadressen. Faktisk vet WordPress ikke hvordan man bestiller av feltfilmregissør eller Movie Rating, så vi må lære WordPress hvordan å gjøre det gjennom denne funksjonen.
Vi har lagt til to sorterbare kolonner i administrasjonsdelen.
Her skal vi se hvordan tilpassede taksonomier (i dette tilfellet kategorier) kan brukes som et ekstra filter på CPT-oppføringen siden i WordPress-administrasjonen, slik at administratorer kan vise CPT-elementer som tilhører en bestemt kategori.
Åpne pluginfilen din og legg til følgende kode for å registrere en funksjon som skal ringes når WordPress forbereder seg til å vise filteret, nedtrekkslisten.
add_action ('restrict_manage_posts', 'my_filter_list');
funksjon my_filter_list () $ screen = get_current_screen (); global $ wp_query; hvis ($ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Vis alle filmgenrer', 'taxonomy' => 'movie_reviews_movie_genre', 'name' => 'movie_reviews_movie_genre', 'orderby '=' 'navn', 'valgt' => (isset ($ wp_query-> spørring ['movie_reviews_movie_genre'])? $ wp_query-> spørre ['movie_reviews_movie_genre']: "), 'hierarkisk' => falsk, 'dybde '=> 3,' show_count '=> false,' hide_empty '=> sant,));
Her har vi brukt en global variabel for å vite hvilken type post som vises, og også brukt en etterspørselsvariabel for å sjekke om det allerede er et eksisterende filter og følgelig sette filteret. De wp_dropdown_categories
funksjonen brukes til å vise alle taksonomiene registrert med filmgenrer. 'rekkefølge etter
','SHOW_COUNT
','hide_empty
','dybde
'etc. er forskjellige argumenter som spesifiserer sortering, viser elementer som teller på hver kategori, skjuler ikke-tilknyttede kategorier, bestemmer maksimal dybde som skal vises for henholdsvis de hierarkiske kategoriene.
Nå etter at filteret nedtrekkslisten er utarbeidet, skal vi skrive noen kode for å vise de filtrerte resultatene. Registrer en funksjon som skal ringes når forespørselen etter innlegg vises.
add_filter ('parse_query', 'perform_filtering');
funksjon perform_filtering ($ query) $ qv = & $ query-> query_vars; hvis (($ qv ['movie_reviews_movie_genre']) && er_numerisk ($ qv ['movie_reviews_movie_genre'])) $ term = get_term_by ('id', $ qv ['movie_reviews_movie_genre'], 'movie_reviews_movie_genre'); $ qv ['movie_reviews_movie_genre'] = $ term-> slug;
De perform_filtering
funksjonen mottar det nåværende WordPress-postforespørselsobjektet og starter deretter ved å få en peker til spørringsvariablene som er lagret i spørringsobjektet. Deretter bekrefter det om en film sjanger er en del av spørringsvariablene og deretter utfører spørringen.
Nå vil du kunne bruke filteret til å vise filmene etter deres sjangere.
Siden vi har opprettet en egendefinert mal for vår CPT, kan vi også opprette en egendefinert arkivside som overstyrer standard arkivmalen.
Åpne pluginfilen Film-Reviews.php og legg til den merkede koden i include_template_function
funksjon.
funksjonen include_template_function ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // sjekker om filen eksisterer i temaet først, // ellers tjen filen fra plugin- theme_file = locate_template (array ('single-movie_reviews.php'))) $ template_path = $ theme_file; ellers $ template_path = plugin_dir_path (__FILE__). '/Single-movie_reviews.php'; elseif (is_archive ()) if ($ theme_file = locate_template (array ('archive-movie_reviews.php'))) $ template_path = $ theme_file; ellers $ template_path = plugin_dir_path (__FILE__). '/Archive-movie_reviews.php'; returnere $ template_path;
WordPress søker gjennom temakatalogen for en arkivmalfil før du bruker standard en. Denne funksjonen kontrollerer om brukeren har gitt en arkivmal i temakatalogen ellers ser den etter filen i plugin-mappen.
Lagre og lukk pluginfilen og opprett en ny fil som heter arkiv-movie_reviews.php og legg til følgende kode i den.
Filmanmeldelser
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>
Tittel Regissør ">
Her har vi brukt løkken til å sykle gjennom innleggspostene og deretter vise dem ved hjelp av et bordoppsett. Vi har også definert en navigasjonsmeny hvis det er flere elementer enn det maksimale antallet som er konfigurert under WordPress Settings. Navigasjonsmenyer vises med next_post_links
og previous_post_links
funksjoner.
Vi har brukt den globale wp_query
objekt som inneholder dataene om det for tiden utførte spørsmålet, for å gjengi innholdet på siden. De get_post_meta
funksjonen har blitt brukt til å hente tilpassede feltdata.
Lagre filen og sjekk arkivsiden for filmen Arkivoversikt.
Her kommer vi til slutten av denne opplæringen. Jeg håper du har kunnet forstå betydningen av egendefinerte innleggstyper. Det er mer å utforske, bare lek med det.
Takk for at du leser og gjerne gi tilbakemelding.