Director:
Gen: ID, "film_reviews_movie_genre", ");?>
Evaluare: „; altceva echo '„; ?>
Î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.
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.
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);
"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.
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 '„; ?>
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.
Î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.
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.
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ă.
Înregistrați o funcție pentru a popula coloanele.
add_action ('manage_posts_custom_column', 'populate_columns');
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ă.
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');
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ă.
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.
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.
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');
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.
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');
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.
Î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.
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.
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
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>
Titlu Director „>
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.
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.