Types de publications personnalisées WordPress taxonomies, colonnes et filtres d'administration

Avant de plonger dans ce didacticiel, veuillez parcourir mon premier didacticiel sur les types de publication personnalisés, où j’ai expliqué certains des aspects importants des CPT (types de publication personnalisés). Dans ce tutoriel, nous explorerons plus en détail cette merveilleuse fonctionnalité dans WordPress..

Ce tutoriel explique comment créer des taxonomies personnalisées, des colonnes admin, des filtres de taxonomie et une page d'archivage pour votre CPT. Alors commençons.


Taxonomie personnalisée pour les types de publication personnalisés

Les taxonomies sont un excellent moyen de regrouper des éléments et nous aident à rechercher des publications appartenant à un groupe spécifique. Dans WordPress, nous utilisons généralement les catégories et les balises comme taxonomies. Les étapes ci-dessous expliquent comment créer des taxonomies personnalisées pour votre CPT.

Étape 1: Enregistrer la fonction personnalisée

Ouvrez votre fichier de plugin, dans notre cas Movie-Reviews.php et ajoutez le code suivant pour enregistrer la fonction personnalisée.

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

Étape 2: Implémentation de la fonction personnalisée et enregistrement de la taxonomie personnalisée

function create_my_taxonomies () register_taxonomy ('movie_reviews_movie_genre', 'movie_reviews', array ('labels' => array ('name' => 'Genre du film', 'add_new_item' => 'Ajouter un nouveau genre de film', 'new_item_name' = > "Nouveau genre de film", 'show_ui' => true, 'show_tagcloud' => false, 'hierarchical' => true)); 

Ici le register_taxonomy function fait tout le travail difficile pour créer une taxonomie personnalisée (dans notre cas une catégorie) avec le nom 'movie_reviews_movie_genre'pour le type de message personnalisé'critiques de films'. Les étiquettes définissent les différentes chaînes utilisées dans la section admin de la taxonomie.

  • 'show_ui' => true est utilisé pour rendre l'éditeur de taxonomie visible dans le tableau de bord.
  • 'show_tagcloud' => false décoder si le nuage de tags doit être visible. Dans notre cas c'est désactivé.
  • 'hierarchical' => true décode le format de la taxonomie personnalisée.

Remarque: 'hierarchical' => false convertit les catégories en balises.

Étape 3: Affichage des taxonomies personnalisées

Après avoir sauvegardé le Movie-Reviews.php fichier, ouvrez votre fichier de modèle personnalisé, dans notre cas single-movie_reviews.php et ajoutez ce qui suit a souligné code pour rendre les catégories visibles dans nos messages.

 
'critiques de films', ); $ loop = new WP_Query ($ mypost); ?> have_posts ()): $ loop-> the_post ();?>
>
Titre:
Réalisateur:
Genre: ID, 'movie_reviews_movie_genre', ");?>
Évaluation: '; else echo ''; ?>

Étape 4: le résultat

Ici, nous avons ajouté une taxonomie personnalisée "Genre de film" dans nos critiques de films CPT. Maintenant, nous pourrons ajouter de nouvelles catégories à partir du panneau d’administration et attribuer chacune d’elles à notre CPT..


Affichage de colonnes supplémentaires

Dans la page de liste CPT d'administrateur WordPress, il existe par défaut deux colonnes - Date et Commentaires - à travers lesquelles nous pouvons trier ces éléments CPT. Pour ajouter des colonnes et un tri, suivez les étapes ci-dessous..

Étape 1: Enregistrer la fonction

Ouvrez le fichier plugin Movie-Reviews.php et ajoutez la ligne de code suivante pour enregistrer une fonction à appeler lors de la préparation de la page de liste de critiques de films.

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

Ici nous avons utilisé le filtre variable manage_edit- (Custom_Post_Type) _columns, qui passe la liste des colonnes du CPT comme argument de la fonction.

Étape 2: Mise en œuvre de la fonction

function mes_colonnes ($ colonnes) $ colonnes ['movie_reviews_director'] = 'Réalisateur'; $ columns ['movie_reviews_rating'] = 'Rating'; unset ($ columns ['commentaires']); retourne $ colonnes; 

Ici nous avons ajouté deux colonnes: Réalisateur et Évaluation dans le panneau d'administration du CPT et a également supprimé la colonne Commentaires de la liste.

Étape 3: Remplir les colonnes

Enregistrer une fonction pour remplir les colonnes.

add_action ('manage_posts_custom_column', 'populate_columns');

Étape 4: mise en œuvre

function 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' == $ colonne) $ movie_rating = get_post_meta (get_the_ID (), 'movie_rating', true); echo $ movie_rating. ' étoiles'; 

Ici, étant donné que la fonction est exécutée lorsque l’une des colonnes CPT est rendue, elle vérifie les colonnes actuellement demandées avant de les renvoyer en écho. Nous avons utilisé le get_the_ID () fonction pour récupérer l'index de la ligne en cours, puis à son tour a utilisé le get_post_meta pour récupérer les données dans la colonne.

Étape 5: Enregistrer les colonnes comme pouvant être triées

Enregistrez maintenant une fonction à appeler lorsque WordPress identifie les colonnes pouvant être triées dans CPT.

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

Étape 6: mise en œuvre

function sort_me ($ columns) $ columns ['movie_reviews_director'] = 'movie_reviews_director'; $ columns ['movie_reviews_rating'] = 'movie_reviews_rating'; retourne $ colonnes; 

Cette fonction identifie deux colonnes pour les rendre triables, puis renvoie le tableau. Mais notre travail n'est pas encore terminé.

Étape 7: Commande par champ personnalisé

add_filter ('request', 'column_ordering'); add_filter ('request', 'column_orderby'); function column_orderby ($ vars) if (! is_admin ()) renvoie $ 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'));  return $ vars; 

La fonction ci-dessus est associée au filtre de requête et ajoute des éléments au tableau de requête, en fonction des variables de l'URL de requête. En fait, WordPress ne sait pas comment classer les champs "Directeur de film" ou "Classement de film", nous devons donc apprendre à WordPress comment le faire via cette fonction..

Nous avons ajouté avec succès deux colonnes triables dans la section admin.


Création de filtres avec une taxonomie personnalisée

Nous verrons ici comment les taxonomies personnalisées (dans ce cas, les catégories) peuvent être utilisées comme filtre supplémentaire dans la page de liste des CPT dans l’administrateur de WordPress, afin que les administrateurs puissent afficher les éléments CPT appartenant à une catégorie spécifique..

Étape 1: Enregistrer la fonction

Ouvrez votre fichier plugin et ajoutez le code suivant pour enregistrer une fonction à appeler lorsque WordPress se prépare à afficher la liste déroulante des filtres..

add_action ('restrict_manage_posts', 'ma_filter_list');

Étape 2: Mise en œuvre de la fonction

function my_filter_list () $ screen = get_current_screen (); global $ wp_query; if ($ screen-> post_type == 'movie_reviews') wp_dropdown_categories (array ('show_option_all' => 'Afficher tous les genres de film', 'taxonomy' => 'movie_reviews_movie_genre', 'name' => 'movie_reviews_movie_genre', 'orderby '=>' name ',' selected '=> (isset ($ wp_query-> query [' movie_reviews_movie_genre ']))? $ wp_query-> query [' movie_reviews_movie_genre ']: "),' hierarchical '=> false,' profondeur '=> 3,' show_count '=> false,' hide_empty '=> true,));

Ici, nous avons utilisé une variable globale pour connaître le type de publication qui est affiché et également utilisé une variable de requête post pour vérifier s'il existe déjà un filtre et définir le filtre en conséquence. le wp_dropdown_categories La fonction est utilisée pour afficher toutes les taxonomies enregistrées avec Movie Genres. Le 'commandé par','show_count','hide_empty','profondeur'etc. sont différents arguments spécifiant le tri, les éléments d'affichage comptent pour chaque catégorie, masquent les catégories non associées, déterminent la profondeur maximale à afficher pour les catégories hiérarchiques, respectivement.

Étape 3: Afficher les résultats filtrés

Maintenant, une fois la liste déroulante du filtre préparée, nous écrirons du code pour afficher les résultats filtrés. Enregistrer une fonction à appeler lors de la préparation de la requête post-affichage.

add_filter ('parse_query', 'perform_filtering');

Étape 4: Mise en œuvre de la fonction d'affichage

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; 

le perform_filtering La fonction reçoit l’objet post-requête WordPress actuel, puis commence par obtenir un pointeur sur les variables de requête stockées dans l’objet de la requête. Il vérifie ensuite si un genre de film fait partie des variables de la requête, puis exécute la requête..

Maintenant, vous pourrez utiliser le filtre pour afficher les films par leur genre.


Dernier mais pas le moindre: créer une page d'archive

Comme nous avons créé un modèle personnalisé pour notre CPT, nous pouvons également créer une page d’archive personnalisée remplaçant le modèle d’archive par défaut..

Étape 1: Ajout d'une solution de secours au modèle d'archive

Ouvrez le fichier plugin Movie-Reviews.php et l'ajouter le code en surbrillance dans le include_template_function une fonction.

function include_template_function ($ template_path) if (get_post_type () == 'movie_reviews') if (is_single ()) // vérifie si le fichier existe déjà dans le thème, // sinon le sert depuis le plugin if ($ theme_file = replace_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 = localiser_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 cherche dans le répertoire du thème un fichier de modèle d'archive avant d'utiliser le fichier par défaut. Cette fonction vérifie si l'utilisateur a fourni un modèle d'archive dans le répertoire du thème, sinon il recherche le fichier dans le dossier du plugin..

Étape 2: Créer le modèle d'archive

Enregistrez et fermez le fichier de plug-in, puis créez un nouveau fichier appelé archive-movie_reviews.php et ajoutez le code suivant.

 

Critiques de films

Titre Réalisateur
">
max_num_pages) && $ wp_query-> max_num_pages> 1) ?>


Ici, nous avons utilisé la boucle pour parcourir les entrées de publication, puis les afficher à l’aide d’un tableau. Nous avons également défini un menu de navigation s'il y a plus d'éléments que le nombre maximum configuré dans les paramètres WordPress. Les menus de navigation sont affichés à l’aide des touches next_post_links et previous_post_links les fonctions.

Nous avons utilisé le global wp_query objet contenant les données sur la requête en cours d'exécution, afin de rendre le contenu de la page. le get_post_meta la fonction a été utilisée pour récupérer des données de champ personnalisées.

Étape 3: le résultat

Enregistrez le fichier et vérifiez la page d'archive pour la liste d'archives de critiques de films.


Nous arrivons à la fin de ce tutoriel. J'espère que vous avez compris l'importance des types de publications personnalisées. Il y a plus à explorer, il suffit de jouer avec.

Merci de votre lecture et n'hésitez pas à donner votre avis.