Heim >CMS-Tutorial >WordDrücken Sie >Customisierte WordPress -Administrationsfilter
In diesem Artikel wird erläutert, wie Sie WordPress -Filter verwenden, um den Bildschirm der Post -Administration anzupassen. Wir werden die integrierten Filter von WordPress behandeln und Ihnen zeigen, wie Sie benutzerdefinierte Filter erstellen, um die Funktionalität zu verbessern.
restrict_manage_posts
und pre_get_posts
hinzugefügt. Diese ermöglichen die Filterung nach verschiedenen Kriterien. functions.php
-Datei Ihres Themas (oder ein Plugin) Code hinzufügen. pre_get_posts
-Filter verändert die Datenbankabfrage und steuert, welche Beiträge angezeigt werden. WordPress bietet Standardfilter auf dem Bildschirm der Post -Administration an (z. B. Datumsfilterung, unten gezeigt). Themen und Plugins können mehr hinzufügen. Diese Filter eingrenzen die Postliste basierend auf angegebenen Kriterien ein.
Während WordPress integrierte Filter anbietet, benötigen Sie häufig benutzerdefinierte für eine bessere Benutzererfahrung. Zwei Haken sind Schlüssel:
restrict_manage_posts
: Fügt dem admin -Bildschirm neue Filtersteuerelemente hinzu. pre_get_posts
: Ändert die Abfrage, bevor sie ausgeführt wird, und filtern Sie die angezeigten Beiträge. Erstellen wir Filter für Postautoren und Formate. Stellen Sie sich eine Website vor, auf der Beiträge manuell Formate und Autoren zugewiesen haben. Der Standard -Administratorbildschirm kann überwältigend sein. Wir werden Dropdown -Menüs für eine leichtere Filterung hinzufügen.
restrict_manage_posts
) Fügen Sie den folgenden Code der functions.php
-Datei Ihres Themas (oder einem Plugin) hinzu:
<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>
Dies fügt dem Postlistenbildschirm zwei Dropdowns hinzu.
pre_get_posts
) Lassen Sie uns nun die Dropdowns funktionieren:
<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>
Diese Funktionen ändern die Abfrage so, dass nur Beiträge enthalten sind, die dem ausgewählten Autor oder dem Postformat entsprechen.
Dies verbesserte Ihren WordPress -Administrator mit benutzerdefinierten Filtern. Sie können diese an andere Post -Attribute an Filter anpassen (siehe Dokumentation der WordPress -Abfrageklassen). Denken Sie daran, immer Benutzereingaben zu sanieren, um Sicherheitslücken zu vermeiden.
Das obige ist der detaillierte Inhalt vonCustomisierte WordPress -Administrationsfilter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!