WordPress Tipuri personalizate de posturi Taxonomii, Coloane de administrare și filtre

Înainte de a vă scufunda în acest tutorial, vă rugăm să treceți prin primul meu tutorial pe tipurile personalizate de posturi, unde am explicat câteva dintre aspectele importante ale CPT-urilor (personalizate tipuri de mesaje). În acest tutorial vom explora mai multe despre această caracteristică minunată în WordPress.

Acest tutorial acoperă modul de creare a taxonomiilor personalizate, a coloanelor de administrare, a filtrelor de taxonomie și a unei pagini de arhivă pentru CPT. Deci, să începem.


Taxonomie personalizată pentru tipurile personalizate de postări

Taxonomiile reprezintă o modalitate excelentă de a grupa lucrurile împreună și de a ne ajuta să căutăm posturi aparținând unui anumit grup. În WordPress folosim în general categorii și etichete ca taxonomii. Pașii de mai jos explică modul de creare a taxonomiilor personalizate pentru CPT.

Pasul 1: Înregistrați funcția personalizată

Deschideți fișierul pluginului, în cazul nostru Film-Reviews.php și adăugați următorul cod pentru a înregistra funcția personalizată.

add_action ('init', 'create_my_taxonomies', 0);

Pasul 2: Implementarea funcțiilor personalizate și înregistrarea taxonomiei personalizate

"create_my_taxonomies () register_taxonomy ('film_reviews_movie_genre', 'film_reviews', array ('labels' => > "Genul noului tip de film"), 'show_ui' => true, 'show_tagcloud' => false, 'hierarchical' => true)); 

Aici register_taxonomy funcția face toată munca grea de a crea o taxonomie personalizată (în cazul nostru o categorie) cu numele "movie_reviews_movie_genre"pentru tipul postului personalizat"movie_reviews“. Etichetele definesc diferitele șiruri de caractere utilizate în secțiunea admin a taxonomiei.

  • 'show_ui' => true este folosit pentru a face din editorul de taxonomie vizibil în tabloul de bord.
  • 'show_tagcloud' => false decoda dacă nodul tag-ului ar trebui să fie vizibil. În cazul nostru este dezactivat.
  • "ierarhic" => adevărat decodează formatul taxonomiei personalizate.

Notă: "ierarhic" => false convertește categoriile în etichete.

Pasul 3: Afișarea taxonomiilor personalizate

După salvarea Film-Reviews.php fișier, deschideți fișierul șablon personalizat, în cazul nostru single-movie_reviews.php și adăugați următoarele evidențiat pentru a face categoriile vizibile în mesajele noastre.

 
'movie_reviews',); $ loop = noua valoare WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>
>
Titlu:
Director:
Gen: ID, "film_reviews_movie_genre", ");?>
Evaluare: „; altceva echo '„; ?>

Pasul 4: Rezultatul

Aici am adăugat o taxonomie personalizată "Genul filmului" în recenziile noastre despre filmul CPT. Acum vom putea adăuga noi categorii din panoul de administrare și le vom atribui CPT-ului nostru.


Afișarea coloanelor suplimentare

În pagina de înscriere CPT de administrare WordPress, în mod implicit există două coloane - Date și Comentarii - prin care putem sorta elementele CPT. Pentru a adăuga coloane suplimentare și sortare, urmați pașii de mai jos.

Pasul 1: Funcția de înregistrare

Deschideți fișierul plugin Film-Reviews.php și adăugați următoarea linie de cod pentru a înregistra o funcție care trebuie apelată când se pregătește pagina de înregistrare a filmelor pentru filme.

add_filter ('manage_edit-movie_reviews_columns', 'my_columns');

Aici am folosit filtrul variabil manage_edit- (Custom_Post_Type) _columns, care transmite lista de coloane a CPT ca argument al funcției.

Pasul 2: Implementarea funcției

funcția my_columns ($ coloane) $ columns ['movie_reviews_director'] = 'Director'; $ coloane ['movie_reviews_rating'] = 'Rating'; dezactivat ($ coloane ['comentarii']); returnează coloane $; 

Aici am adăugat două coloane: Director și evaluare în panoul de administrare al CPT și, de asemenea, a șters coloana Comentarii din listă.

Pasul 3: Populația coloanelor

Înregistrați o funcție pentru a popula coloanele.

add_action ('manage_posts_custom_column', 'populate_columns');

Pasul 4: Implementarea

funcția populate_columns ($ column) if ('movie_reviews_director' == coloană) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); echo $ movie_director;  elseif ('movie_reviews_rating' == coloana $) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. "stele"; 

Aici, deoarece funcția este executată atunci când oricare dintre coloanele CPT este redată, aceasta verifică coloanele solicitate în momentul de față înainte de a le repeta. Am folosit get_the_ID () funcția de a prelua indicele rândului curent și apoi, la rândul său, a folosit get_post_meta pentru a prelua datele din coloană.

Pasul 5: Înregistrați coloanele ca fiind ușor de sortit

Acum permiteți înregistrarea unei funcții care trebuie apelată când WordPress identifică coloanele din CPT.

add_filter ('manage_edit-movie_reviews_sortable_columns', 'sort_me');

Pasul 6: Implementarea

funcție sort_me ($ coloane) $ coloane ['movie_reviews_director'] = 'movie_reviews_director'; $ coloane ['movie_reviews_rating'] = 'film_reviews_rating'; returnează coloane $; 

Această funcție identifică două coloane pentru a le face să se alăture și apoi returnează matricea. Dar munca noastră nu sa terminat încă.

Pasul 7: Ordonează după câmpul personalizat

add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); funcția column_orderby ($ vars) if (! is_admin ()) return $ vars; ($ vars, array ('meta_key' => 'film_director', 'orderby' = $ vars = 'array_merge' > "meta_value")); ($ vars = 'array_merge' ($ vars, array ('meta_key' => 'movie_rating', 'orderby' => 'meta_value_num'));  return $ vars; 

Funcția de mai sus este asociată cu filtrul de solicitare și adaugă elemente în matricea interogărilor, pe baza variabilelor din adresa URL a interogării. De fapt, WordPress nu știe cum să comande prin câmpurile "Movie Director" sau "Movie Rating", așa că trebuie să învățăm WordPress cum să facă asta prin această funcție.

Am adăugat cu succes două coloane în secțiunea admin.


Crearea de filtre cu taxonomie particularizată

Aici vom vedea cum taxonomiile personalizate (în acest caz categorii) pot fi utilizate ca un filtru suplimentar în pagina de înregistrare a CPT din administratorul WordPress, astfel încât administratorii să poată afișa elementele CPT aparținând unei anumite categorii.

Pasul 1: Înregistrați funcția

Deschideți fișierul plugin și adăugați următorul cod pentru a înregistra o funcție care trebuie apelată când WordPress se pregătește să afișeze lista derulantă a filtrului.

add_action ('restrict_manage_posts', 'my_filter_list');

Pasul 2: Implementarea funcției

funcția my_filter_list () $ screen = get_current_screen (); global $ wp_query; dacă $ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Show All Movie Genres', 'taxonomy' => 'movie_reviews_movie_genre', 'name' => 'movie_reviews_movie_genre' '=>' nume ',' selectat '=> (isset ($ wp_query-> interogare [' movie_reviews_movie_genre ']) $ wp_query-> interogare [' movie_reviews_movie_genre ']: '=> 3,' show_count '=> false,' hide_empty '=> true,));

Aici am folosit o variabilă globală pentru a cunoaște tipul de post care este afișat și a folosit, de asemenea, o variabilă de interogare post pentru a verifica dacă există deja un filtru existent și, în consecință, setați filtrul. wp_dropdown_categories funcția este utilizată pentru a afișa toate taxonomiile înregistrate cu Genuri de film. ''orderby","SHOW_COUNT","hide_empty","adâncime'etc sunt argumente diferite care specifică sortarea, afișarea articolelor pe fiecare categorie, ascunderea categoriilor neasociate, determinarea adâncimii maxime care trebuie afișată pentru categoriile ierarhice.

Pasul 3: Afișați rezultatele filtrate

Acum după ce a fost pregătită lista derulantă a filtrului, vom scrie un cod pentru afișarea rezultatelor filtrate. Înregistrați o funcție care trebuie apelată atunci când se pregătește interogarea de afișare postare.

add_filter ('parse_query', 'perform_filtering');

Pasul 4: Implementarea funcției de afișare

funcția perform_filtering ($ query) $ qv = & $ query-> query_vars; dacă ($ qv ['movie_reviews_movie_genre']) && is_numeric ($ qv ['movie_reviews_movie_genre'])) $ term = get_term_by ('id', $ qv ['movie_reviews_movie_genre']; $ qv ['film_reviews_movie_genre'] = $ termen -> slug; 

perform_filtering funcția primește obiectul interogatoriu WordPress curent și apoi începe prin a obține un pointer la variabilele de interogare stocate în interiorul obiectului de interogare. Apoi verifică dacă un Gen de Film face parte din variabilele de interogare și apoi execută interogarea.

Acum veți putea folosi filtrul pentru a afișa filmele după genurile lor.


Ultima, dar nu cea mai mică: Creați o pagină de arhivă

Întrucât am creat un șablon personalizat pentru CPT-ul nostru, putem crea, de asemenea, o pagină de arhivă personalizată care să înlocuiască șablonul implicit de arhivare.

Pasul 1: Adăugarea unui Fallback în șablonul de arhivă

Deschideți fișierul plugin Film-Reviews.php și adăugați codul evidențiat în include_template_function funcţie.

funcția include_template_function ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // verifică dacă fișierul există mai întâi în temă, theme_file = locate_template (array ('single-movie_reviews.php'))) $ template_path = $ theme_file;  altceva $ template_path = plugin_dir_path (__FILE__). '/Single-movie_reviews.php';  elseif (is_archive ()) if ($ theme_file = locate_template (array ('arhiva-movie_reviews.php'))) $ template_path = $ theme_file;  altceva $ template_path = plugin_dir_path (__FILE__). '/Archive-movie_reviews.php';  returnează calea șablon $; 

WordPress căutări prin directorul tematic pentru un fișier de șablon de arhivă înainte de a utiliza fișierul implicit. Această funcție verifică dacă utilizatorul a furnizat un șablon de arhivă în directorul de teme, altfel caută fișierul din dosarul pluginului.

Pasul 2: Creați șablonul de arhivă

Salvați și închideți fișierul plugin și apoi creați un nou fișier numit Arhiva-movie_reviews.php și adăugați următorul cod în el.

 

Recenzii de filme

Titlu Director
„>
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>


Aici am folosit buclele pentru a trece prin intrările post și apoi le afișăm folosind un tabel. De asemenea, am definit un meniu de navigare dacă există mai multe elemente decât numărul maxim configurat în Setările WordPress. Meniurile de navigare sunt afișate utilizând tasta next_post_links și previous_post_links funcții.

Am folosit lumea globală wp_query obiect care conține datele despre interogarea curentă executată, pentru a reda conținutul paginii. get_post_meta funcția a fost utilizată pentru a prelua date de câmp personalizate.

Pasul 3: Rezultatul

Salvați fișierul și verificați pagina de arhivare pentru lista de arhive de recenzii film.


Aici ajungem la sfârșitul acestui tutorial. Sper că ați reușit să înțelegeți importanța tipurilor de posturi personalizate. Exista mai multe de explorat, pur si simplu jucati cu el.

Vă mulțumim pentru citire și nu ezitați să vă oferiți feedbackul.

Cod