Maison >Tutoriel CMS >WordPresse >Filtres d'administration WordPress personnalisés

Filtres d'administration WordPress personnalisés

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-18 11:11:091034parcourir

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.

Concepts clés

  • WordPress fournit des filtres par défaut sur l'écran d'administration Post pour afficher des publications en fonction de critères spécifiques. Ces filtres sont extensibles.
  • De nouveaux filtres sont ajoutés à l'aide des crochets restrict_manage_posts et pre_get_posts. Ceux-ci permettent de filtrer les publications par divers critères.
  • Les filtres personnalisés pour les formats de post et les auteurs peuvent être créés en ajoutant du code au fichier functions.php de votre thème (ou un plugin).
  • Le filtre pre_get_posts modifie la requête de la base de données, contrôlant les publications affichées.
  • Les filtres personnalisés améliorent l'expérience utilisateur, ajoutent des fonctionnalités et maintiennent le code propre.

Filtrage Posts: les bases

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.

Customized WordPress Administration Filters

Création de filtres personnalisé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.

Exemple: filtrage par auteur et au format post

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.

ajoutant des menus déroulants (restrict_manage_posts)

Ajoutez le code suivant au fichier functions.php de votre thème (ou un plugin):

Filtre par auteur:

<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>

Filtre par format post:

<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.

Customized WordPress Administration Filters

Filtrage de la liste de publication (pre_get_posts)

Maintenant, faisons fonctionner les listes déroulantes:

Filtrage par auteur:

<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>

Filtrage par format post:

<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é.

Customized WordPress Administration Filters

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn