Maison >Tutoriel CMS >WordPresse >Filtres d'administration WordPress personnalisés
Cet article explique comment utiliser les filtres WordPress pour personnaliser l'écran Post Administration. Nous couvrirons les filtres intégrés de WordPress et vous montrerons comment créer des filtres personnalisés pour améliorer les fonctionnalités.
restrict_manage_posts
et pre_get_posts
. Ceux-ci permettent de filtrer les publications par divers critères. functions.php
de votre thème (ou un plugin). pre_get_posts
modifie la requête de la base de données, contrôlant les publications affichées. WordPress propose des filtres par défaut sur l'écran d'administration (comme le filtrage de date, illustré ci-dessous). Les thèmes et les plugins peuvent en ajouter plus. Ces filtres rétrécissent la liste des articles en fonction des critères spécifiés.
Bien que WordPress propose des filtres intégrés, vous avez souvent besoin de ceux personnalisés pour une meilleure expérience utilisateur. Deux crochets sont essentiels:
restrict_manage_posts
: ajoute de nouveaux contrôles de filtre au haut de l'écran d'administration. pre_get_posts
: modifie la requête avant son exécution, filtrant les messages affichés. Créons des filtres pour les auteurs et les formats post. Imaginez un site Web où les publications ont des formats et des auteurs qui ont manqué. L'écran d'administration par défaut peut être écrasant. Nous ajouterons des menus déroulants pour un filtrage plus facile.
restrict_manage_posts
) Ajoutez le code suivant au fichier functions.php
de votre thème (ou un plugin):
<code class="language-php">function add_author_filter() { global $post_type; if ($post_type == 'post') { $user_args = array( 'show_option_all' => 'All Authors', 'orderby' => 'display_name', 'order' => 'ASC', 'name' => 'author_filter', 'who' => 'authors', 'include_selected' => true ); if (isset($_GET['author_filter'])) { $user_args['selected'] = (int) sanitize_text_field($_GET['author_filter']); } wp_dropdown_users($user_args); } } add_action('restrict_manage_posts', 'add_author_filter');</code>
<code class="language-php">function add_post_format_filter() { global $post_type; if ($post_type == 'post') { $post_formats_args = array( 'show_option_all' => 'All Formats', 'orderby' => 'NAME', 'order' => 'ASC', 'name' => 'post_format_filter', 'taxonomy' => 'post_format' ); if (isset($_GET['post_format_filter'])) { $post_formats_args['selected'] = sanitize_text_field($_GET['post_format_filter']); } wp_dropdown_categories($post_formats_args); } } add_action('restrict_manage_posts', 'add_post_format_filter');</code>
Cela ajoute deux listes déroulantes à l'écran de la liste des messages.
pre_get_posts
) Maintenant, faisons fonctionner les listes déroulantes:
<code class="language-php">function filter_posts_by_author($query) { global $post_type, $pagenow; if ($pagenow == 'edit.php' && $post_type == 'post' && isset($_GET['author_filter'])) { $author_id = sanitize_text_field($_GET['author_filter']); if ($author_id != 0) { $query->set('author', $author_id); } } } add_action('pre_get_posts', 'filter_posts_by_author');</code>
<code class="language-php">function filter_posts_by_format($query) { global $post_type, $pagenow; if ($pagenow == 'edit.php' && $post_type == 'post' && isset($_GET['post_format_filter'])) { $post_format = sanitize_text_field($_GET['post_format_filter']); if ($post_format != 0) { $query->set('post_format', $post_format); } } } add_action('pre_get_posts', 'filter_posts_by_format');</code>
Ces fonctions modifient la requête pour inclure uniquement les publications correspondant à l'auteur ou au format de poste sélectionné.
Cela a amélioré votre administrateur WordPress avec des filtres personnalisés. Vous pouvez l'adapter à Filtre par d'autres attributs de post (reportez-vous à la documentation de la classe de requête WordPress). N'oubliez pas de toujours désinfecter les entrées des utilisateurs pour éviter les vulnérabilités de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!