Direktör:
Genre: ID, "movie_reviews_movie_genre", ");?>
Betyg: '; annars echo ''; ?>
Innan du dyker in i denna handledning, gå igenom min första handledning om anpassade inläggstyper, där jag har förklarat några viktiga aspekter av CPT (anpassade inläggstyper). I denna handledning ska vi utforska mer om denna underbara funktion i WordPress.
Denna handledning täcker hur man skapar anpassade taxonomier, admin kolumner, taxonomi filter och en arkivsida för din CPT. Så låt oss börja.
Taxonomier är ett bra sätt att gruppera saker tillsammans och hjälpa oss att söka inlägg som tillhör en viss grupp. I WordPress använder vi vanligtvis kategorier och taggar som taxonomier. Stegen nedan förklarar hur man skapar anpassade taxonomier för din CPT.
Öppna din pluginfil, i vårt fall Film-Reviews.php och lägg till följande kod för att registrera den anpassade funktionen.
add_action ('init', 'create_my_taxonomies', 0);
funktion create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews', array ('labels' => array ('name' => 'Filmgenre', 'add_new_item' => 'Lägg till ny filmgenre', 'new_item_name' = > "New Movie Type Genre"), "show_ui '=> true,' show_tagcloud '=> false,' hierarchical '=> true));
Här register_taxonomy
funktion gör allt det hårda arbetet med att skapa en anpassad taxonomi (i vårt fall en kategori) med namnet "movie_reviews_movie_genre
"för den anpassade posttypen"movie_reviews
'. Etiketterna definierar de olika strängarna som används i administrativ delen av taxonomin.
'show_ui' => true
används för att göra taxonomiseringsredigeraren synlig i instrumentbrädan.'show_tagcloud' => false
avkoda om taggmoln ska vara synlig. I vårt fall är den inaktiverad.'hierarkisk' => sant
avkodar formatet för den anpassade taxonomin.Notera: 'hierarkisk' => false
konverterar kategorierna till taggar.
Efter att ha sparat Film-Reviews.php fil, öppna din anpassade mallfil, i vårt fall enkel movie_reviews.php och lägg till följande markerad kod för att göra kategorierna synliga i våra inlägg.
'movie_reviews',); $ loop = ny WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>> Titel:
Direktör:
Genre: ID, "movie_reviews_movie_genre", ");?>
Betyg: '; annars echo ''; ?>
Här har vi lagt till en anpassad taxonomi "Movie Genre" i våra filmrecensioner CPT. Nu kommer vi att kunna lägga till nya kategorier från adminpanelen och tilldela var och en av dem till vår CPT.
I WordPress admin CPT-listningssidan finns vanligtvis två kolumner - Datum och kommentarer - genom vilka vi kan sortera dessa CPT-objekt. För att lägga till extra kolumner och sortering, följ anvisningarna nedan.
Öppna pluginfilen Film-Reviews.php och lägg till följande rad kod för att registrera en funktion som ska ringas när filmrecensionerna är färdiga.
add_filter ('manage_edit-movie_reviews_columns', 'my_columns');
Här har vi använt det variabla filtret manage_edit- (Custom_Post_Type) _columns
, som passerar kolumnlistan av CPT som ett argument för funktionen.
funktion my_columns ($ kolumner) $ kolumner ['movie_reviews_director'] = 'Director'; $ kolumner ['movie_reviews_rating'] = 'Betyg'; unset ($ kolumner ['kommentarer']); returnera $ kolumner;
Här har vi lagt till två kolumner: Direktör och Betyg i CPT: s adminpanel och raderade också kolumnen Kommentarer från noteringen.
Registrera en funktion för att fylla i kolumnerna.
add_action ('manage_posts_custom_column', 'populate_columns');
funktionen populate_columns ($ kolumn) if ('movie_reviews_director' == $ kolumn) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); echo $ movie_director; elseif ('movie_reviews_rating' == $ kolumn) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. "stjärnor";
Här, sedan funktionen körs när någon av CPT-kolumnerna görs, kontrollerar den för de förfrågade kolumnerna innan de echoes. Vi har använt get_the_ID ()
funktion för att hämta indexet för den aktuella raden och sedan i sin tur har använt get_post_meta
för att hämta data i kolumnen.
Låt oss nu registrera en funktion som ska ringas när WordPress identifierar sorterbara kolumner i CPT.
add_filter ('manage_edit-movie_reviews_sortable_columns', 'sort_me');
funktion sort_me ($ kolumner) $ kolumner ['movie_reviews_director'] = 'movie_reviews_director'; $ kolumner ['movie_reviews_rating'] = 'movie_reviews_rating'; returnera $ kolumner;
Denna funktion identifierar två kolumner för att göra dem sorterbara och returnerar sedan arrayen. Men vårt arbete har inte avslutats än.
add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); funktion column_orderby ($ vars) if (! is_admin ()) returnerar $ vars; $ vars = array_merge ($ vars, array ('meta_key' => 'movie_director', 'orderby' = 'orderby']) && 'movie_reviews_director' == $ vars > 'meta_value')); elseif (isset ($ vars ['orderby']) && 'movie_reviews_rating' == $ vars ['orderby']) $ vars = array_merge ($ vars, array ('meta_key' => 'movie_rating' => 'meta_value_num')); returnera $ vars;
Ovanstående funktion är associerad med begäran-filtret och lägger till element i frågeuppsättningen, baserat på variablerna i frågeadressen. Egentligen vet WordPress inte hur man beställer sig genom fälten "Movie Director" eller "Movie Rating", så vi behöver lära oss WordPress hur man gör det via denna funktion.
Vi har framgångsrikt lagt till två sorterbara kolumner i admin sektionen.
Här ska vi se hur anpassade taxonomier (i detta fall kategorier) kan användas som ett extra filter på CPT-listningssidan i WordPress-administratören, så att administratörer kan visa CPT-element som tillhör en viss kategori.
Öppna din plugin-fil och lägg till följande kod för att registrera en funktion som ska ringas när WordPress förbereder sig för att visa rullgardinsmenyn.
add_action ('limit_manage_posts', 'my_filter_list');
funktion my_filter_list () $ screen = get_current_screen (); global $ wp_query; om $ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Visa alla filmgenrer', 'taxonomy' => 'movie_reviews_movie_genre', 'name' => 'movie_reviews_movie_genre', 'orderby '=' 'namn', 'valda' => (isset ($ wp_query-> fråga ['movie_reviews_movie_genre'])? $ wp_query-> fråga ['movie_reviews_movie_genre']: "), hierarkisk" => falskt "djup '=> 3,' show_count '=> false,' hide_empty '=> true,));
Här har vi använt en global variabel för att känna till vilken typ av post som visas och även använt en efterfrågningsvariabel för att kontrollera om det redan finns ett existerande filter och därmed ställa in filtret. De wp_dropdown_categories
funktionen används för att visa alla taxonomier registrerade med filmgenrer. "sortera efter
','show_count
','hide_empty
','djup
"etc. är olika argument som specificerar sortering, visa artiklar räknas på varje kategori, döljer icke-associerade kategorier, bestämma det maximala djupet som ska visas för respektive hierarkiska kategorier.
Nu efter att nedrullningslistan för filter har lagts fram ska vi skriva en kod för att visa de filtrerade resultaten. Registrera en funktion som ska ringas när förfrågningsformuläret är upprättat.
add_filter ('parse_query', 'perform_filtering');
funktion perform_filtering ($ query) $ qv = & $ query-> query_vars; om (($ qv ['movie_reviews_movie_genre']) && är_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
funktionen tar emot det aktuella WordPress-postfrågningsobjektet och startar sedan genom att få en pekare till frågevariablerna som lagras inuti sökobjektet. Därefter verifierar den om en filmgenre är en del av frågevariablerna och utför sedan frågan.
Nu kan du använda filtret för att visa filmerna genom deras genrer.
Eftersom vi har skapat en anpassad mall för vår CPT, kan vi också skapa en anpassad arkivsida som överstiger standardarkivmallen.
Öppna pluginfilen Film-Reviews.php och lägg till den markerade koden i include_template_function
fungera.
(if_tingle_text) if theme_file = locate_template (array ('single-movie_reviews.php'))) $ template_path = $ theme_file; annars $ 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; annars $ template_path = plugin_dir_path (__FILE__). '/Archive-movie_reviews.php'; returnera $ template_path;
WordPress söker igenom temakatalogen för en arkivmallfil innan den används som standard. Den här funktionen kontrollerar om användaren har lagt in en arkivmall i temakatalogen annars söker den efter filen i pluginens mapp.
Spara och stäng pluginfilen och skapa sedan en ny fil som heter arkiv-movie_reviews.php och lägg till följande kod i den.
Filmrecensioner
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>
Titel Direktör ">
Här har vi använt slingan att cykla genom postposterna och sedan visa dem med en tabelllayout. Vi har också definierat en navigeringsmeny om det finns fler objekt än det maximala antalet konfigurerade under WordPress-inställningar. Navigationsmenyerna visas med hjälp av next_post_links
och previous_post_links
funktioner.
Vi har använt den globala wp_query
objekt som innehåller data om den aktuella exekverade frågan, för att göra innehållet på sidan. De get_post_meta
funktionen har använts för att hämta anpassad fältdata.
Spara filen och kolla arkivsidan för arkivfilen Filmrecensioner.
Här kommer vi till slutet av denna handledning. Jag hoppas att du har kunnat förstå betydelsen av anpassade inläggstyper. Det finns mer att utforska, bara leka med det.
Tack för att du läste och känner dig fri att ge din feedback.