Regisseur:
Genre: ID, 'movie_reviews_movie_genre', ");?>
Beoordeling: '; else echo ''; ?>
Voordat je in deze tutorial duikt, doorloop je mijn eerste tutorial over Custom Post Types, waar ik enkele van de belangrijke aspecten van CPT's heb uitgelegd (Custom Post Types). In deze tutorial zullen we meer ontdekken over deze prachtige functie in WordPress.
Deze zelfstudie behandelt hoe aangepaste taxonomieën, beheerderskolommen, taxonomiefilters en een archiefpagina voor uw CPT kunnen worden gemaakt. Laten we beginnen.
Taxonomieën zijn een geweldige manier om dingen samen te groeperen en ons te helpen bij het zoeken naar berichten van een specifieke groep. In WordPress gebruiken we over het algemeen Categorieën en Tags als taxonomieën. De onderstaande stappen leggen uit hoe u aangepaste taxonomieën kunt maken voor uw CPT.
Open uw plug-in bestand, in ons geval Movie-Reviews.php en voeg de volgende code toe om de aangepaste functie te registreren.
add_action ('init', 'create_my_taxonomies', 0);
functie create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews', array ('labels' => array ('name' => 'Filmgenre', 'add_new_item' => 'Nieuw filmgenre toevoegen', 'new_item_name' = > "New Movie Type Genre"), 'show_ui' => true, 'show_tagcloud' => false, 'hierarchical' => true));
Hier de register_taxonomy
functie doet al het werk van het maken van een aangepaste taxonomie (in ons geval een categorie) met de naam 'movie_reviews_movie_genre
'voor het aangepaste berichttype'filmrecensies
'. De labels definiëren de verschillende strings die worden gebruikt in de admin-sectie van de taxonomie.
'show_ui' => waar
wordt gebruikt om de taxonomie-editor zichtbaar te maken in het dashboard.'show_tagcloud' => false
decoderen of de tagwolk zichtbaar moet zijn. In ons geval is het uitgeschakeld.'hierarchisch' => waar
decodeert het formaat van de aangepaste taxonomie.Notitie: 'hierarchisch' => false
converteert de categorieën in tags.
Na het opslaan van de Movie-Reviews.php bestand, open uw aangepaste sjabloonbestand, in ons geval single-movie_reviews.php en voeg het volgende toe gemarkeerd code om de categorieën zichtbaar te maken in onze berichten.
'movie_reviews',); $ loop = new WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>> Titel:
Regisseur:
Genre: ID, 'movie_reviews_movie_genre', ");?>
Beoordeling: '; else echo ''; ?>
Hier hebben we een aangepaste taxonomie 'Filmgenre' toegevoegd in onze filmrecensies CPT. Nu kunnen we nieuwe categorieën toevoegen vanuit het beheerdersdashboard en deze toewijzen aan onze CPT.
Op de pagina met de CPT-lijst van WordPress-beheerders zijn standaard twee kolommen aanwezig - Datum en opmerkingen - waarmee we die CPT-items kunnen sorteren. Voer de onderstaande stappen uit om extra kolommen toe te voegen en te sorteren.
Open het plug-in bestand Movie-Reviews.php en voeg de volgende regel code toe om een functie te registreren die moet worden aangeroepen wanneer de aanbiedingspagina Filmherzieningen wordt voorbereid.
add_filter ('manage_edit-film_reviews_columns', 'my_columns');
Hier hebben we het variabel filter gebruikt manage_edit- (Custom_Post_Type) _columns
, die de kolomlijst van de CPT doorgeeft als een argument voor de functie.
function my_columns ($ columns) $ columns ['movie_reviews_director'] = 'Regisseur'; $ columns ['movie_reviews_rating'] = 'Beoordeling'; unset ($ columns ['comments']); return $ kolommen;
Hier hebben we twee kolommen toegevoegd: Regisseur en Beoordeling in het admin panel van de CPT en verwijderde ook de Comments kolom uit de listing.
Registreer een functie om de kolommen te vullen.
add_action ('manage_posts_custom_column', 'populate_columns');
functie populate_columns ($ column) if ('movie_reviews_director' == $ column) $ movie_director = esc_html (get_post_meta (get_the_ID (), 'movie_director', true)); echo $ movie_director; elseif ('movie_reviews_rating' == $ column) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. 'sterren';
Hier, aangezien de functie wordt uitgevoerd wanneer een van de CPT-kolommen wordt weergegeven, wordt gecontroleerd of de kolommen die op dat moment zijn aangevraagd voordat ze worden gesequilleerd. We hebben de get_the_ID ()
functie om de index van de huidige rij op te halen en vervolgens op zijn beurt de get_post_meta
om de gegevens in de kolom op te halen.
Laten we nu een functie registreren die moet worden aangeroepen wanneer WordPress sorteerbare kolommen identificeert in CPT.
add_filter ('manage_edit-film_reviews_sortable_columns', 'sort_me');
function sort_me ($ columns) $ columns ['movie_reviews_director'] = 'movie_reviews_director'; $ columns ['movie_reviews_rating'] = 'filmracht_rende_rating'; return $ kolommen;
Deze functie identificeert twee kolommen om ze sorteerbaar te maken en retourneert vervolgens de array. Maar ons werk is nog niet af.
add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); functie column_orderby ($ vars) if (! is_admin ()) return $ vars; if (isset ($ vars ['orderby']) && 'movie_reviews_director' == $ vars ['orderby']) $ 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', 'orderby' => 'meta_value_num')); retourneer $ vars;
De bovenstaande functie is gekoppeld aan het verzoekfilter en voegt elementen aan de queryarray toe, op basis van de variabelen in de query-URL. Eigenlijk weet WordPress niet hoe te bestellen door de velden 'Movie Director' of 'Movie Rating', dus we moeten WordPress leren hoe dat te doen via deze functie.
We hebben met succes twee sorteerbare kolommen toegevoegd aan de admin-sectie.
Hier zullen we zien hoe aangepaste taxonomieën (in dit geval categorieën) kunnen worden gebruikt als een extra filter in de CPT-lijstpagina in de WordPress-beheerder, zodat beheerders CPT-elementen kunnen weergeven die tot een specifieke categorie behoren.
Open uw plugin-bestand en voeg de volgende code toe om een functie te registreren die moet worden aangeroepen wanneer WordPress zich voorbereidt om de vervolgkeuzelijst filter weer te geven.
add_action ('restrict_manage_posts', 'my_filter_list');
function my_filter_list () $ screen = get_current_screen (); globale $ wp_query; if ($ 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', 'orderby '=>' naam ',' selected '=> (isset ($ wp_query-> query [' movie_reviews_movie_genre '])? $ wp_query-> query [' film_reviews_movie_genre ']:'), 'hierarchical' => false, 'depth '=> 3,' show_count '=> false,' hide_empty '=> true,));
Hier hebben we een globale variabele gebruikt om het type bericht te kennen dat wordt weergegeven en ook een postqueryvariabele om te controleren of er al een bestaand filter is en dienovereenkomstig het filter in te stellen. De wp_dropdown_categories
functie wordt gebruikt om alle taxonomieën te tonen die zijn geregistreerd met filmgenres. De 'orderby
','SHOW_COUNT
','hide_empty
','diepte
'enz. zijn verschillende argumenten die sorteren specificeren, show items tellen op elke categorie, niet-geassocieerde categorieën verbergen, bepalen welke maximale diepte wordt getoond voor de respectievelijke hiërarchische categorieën.
Nu nadat de filter-vervolgkeuzelijst is voorbereid, zullen we een code schrijven om de gefilterde resultaten weer te geven. Registreer een functie die moet worden aangeroepen wanneer de query voor het weergeven van berichten wordt voorbereid.
add_filter ('parse_query', 'perform_filtering');
function perform_filtering ($ query) $ qv = & $ query-> query_vars; if (($ qv ['movie_reviews_movie_genre']) && is_numeric ($ 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
functie ontvangt het huidige WordPress berichtqueryobject en begint dan met het ophalen van een aanwijzer naar de queryvariabelen die zijn opgeslagen in het queryobject. Vervolgens wordt gecontroleerd of een filmgenre deel uitmaakt van de queryvariabelen en vervolgens de query uitvoert.
Nu kunt u het filter gebruiken om de films weer te geven op basis van hun genres.
Omdat we een aangepaste sjabloon voor onze CPT hebben gemaakt, kunnen we ook een aangepaste archiefpagina maken die de standaard archiveringssjabloon overschrijft.
Open het plug-in bestand Movie-Reviews.php en de gemarkeerde code toevoegen in de include_template_function
functie.
functie include_template_functie ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // controleert of het bestand al in het thema voorkomt, // serveer anders het bestand van de plug-in als ($ theme_file = locate_template (array ('single-movie_reviews.php'))) $ template_path = $ theme_file; else $ 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; else $ template_path = plugin_dir_path (__FILE__). '/Archive-movie_reviews.php'; return $ template_path;
WordPress doorzoekt de themamap voor een archiefsjabloonbestand voordat de standaardmap wordt gebruikt. Deze functie controleert of de gebruiker een archiefsjabloon heeft opgegeven in de themadirectory anders zoekt het naar het bestand in de map van de plug-in.
Sla het plugin-bestand op en sluit het en maak vervolgens een nieuw bestand met de naam archief-movie_reviews.php en voeg de volgende code erin toe.
Filmrecensies
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>
Titel Regisseur ">
Hier hebben we de lus gebruikt om door de berichtinvoeren te bladeren en ze vervolgens weer te geven met behulp van een tabellay-out. We hebben ook een navigatiemenu gedefinieerd als er meer items zijn dan het maximale aantal dat is geconfigureerd onder WordPress-instellingen. Navigatiemenu's worden weergegeven met behulp van de next_post_links
en previous_post_links
functies.
We hebben de global gebruikt wp_query
object met de gegevens over de momenteel uitgevoerde query, om de pagina-inhoud weer te geven. De get_post_meta
functie is gebruikt om aangepaste veldgegevens op te halen.
Sla het bestand op en controleer de archiefpagina voor de archieflijst Movie Reviews.
Hier komen we aan het einde van deze tutorial. Ik hoop dat je de betekenis van aangepaste berichttypen hebt begrepen. Er valt meer te ontdekken, speel er gewoon mee.
Bedankt voor het lezen en voel je vrij om je feedback te geven.