Rumah >Tutorial CMS >WordTekan >Penapis Pentadbiran WordPress yang disesuaikan
Artikel ini menerangkan cara menggunakan penapis WordPress untuk menyesuaikan skrin Pentadbiran Pos. Kami akan meliputi penapis terbina dalam WordPress dan menunjukkan kepada anda cara membuat penapis tersuai untuk meningkatkan fungsi.
restrict_manage_posts
dan pre_get_posts
. Ini membolehkan penapisan jawatan dengan pelbagai kriteria. functions.php
tema anda (atau plugin). pre_get_posts
memodifikasi pertanyaan pangkalan data, mengawal jawatan mana yang dipaparkan. WordPress menawarkan penapis lalai pada skrin Pentadbiran Pos (seperti penapisan tarikh, ditunjukkan di bawah). Tema dan plugin boleh menambah lebih banyak. Penapis ini menyempitkan senarai pos berdasarkan kriteria yang ditentukan.
restrict_manage_posts
pre_get_posts
Menambah Menu Dropdown (
restrict_manage_posts
tema anda (atau plugin): functions.php
<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>penapis oleh format pos:
<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>Ini menambah dua lungsur ke skrin senarai pos.
Penapisan senarai pos (
pre_get_posts
<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>
Kesimpulan
Ini meningkatkan admin WordPress anda dengan penapis tersuai. Anda boleh menyesuaikannya untuk menapis oleh atribut pos lain (rujuk dokumentasi Kelas Kueri WordPress). Ingatlah untuk sentiasa membersihkan input pengguna untuk mengelakkan kelemahan keselamatan.
Atas ialah kandungan terperinci Penapis Pentadbiran WordPress yang disesuaikan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!