WordPress Anpassade posttyper Taxonomics, Admin Columns & Filters

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.


Anpassad taxonomi för anpassade inläggstyper

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.

Steg 1: Registrera anpassad funktion

Ö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);

Steg 2: Implementering av anpassad funktion och registrering av anpassad taxonomi

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.

Steg 3: Visa anpassade taxonomier

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 ''; ?>

Steg 4: Resultatet

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.


Visar ytterligare kolumner

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.

Steg 1: Registrera Funktion

Ö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.

Steg 2: Funktionens genomförande

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.

Steg 3: Populera kolumnerna

Registrera en funktion för att fylla i kolumnerna.

add_action ('manage_posts_custom_column', 'populate_columns');

Steg 4: Implementering

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.

Steg 5: Registrera kolumner som sorterbara

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');

Steg 6: Implementering

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.

Steg 7: Beställ efter anpassat fält

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.


Skapa filter med anpassad taxonomi

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.

Steg 1: Registrera funktionen

Ö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');

Steg 2: Funktionens genomförande

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.

Steg 3: Visa filtrerade resultat

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');

Steg 4: Implementering av displayfunktionen

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.


Sist men inte minst: Skapa en arkivsida

Eftersom vi har skapat en anpassad mall för vår CPT, kan vi också skapa en anpassad arkivsida som överstiger standardarkivmallen.

Steg 1: Lägga till en återgång till arkivmallen

Ö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.

Steg 2: Skapa arkivmallen

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

Titel Direktör
">
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>


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.

Steg 3: Resultatet

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.