Câu trả lời:
Hãy thử plugin này tôi đã nấu lên:
<?php
! defined( 'ABSPATH' ) AND exit;
/**
* Plugin Name: (#26032) WP_List_Table Post Format filter extension
* Plugin URI: http://wordpress.stackexchange.com/questions/26032/how-to-filter-by-post-format-in-admin
* Description: Filters the admin WP_List_Table by post format
* Author: Bainternet
* Author URI: http://en.bainternet.info
*/
function wpse26032_admin_posts_filter( &$query )
{
if (
is_admin()
AND 'edit.php' === $GLOBALS['pagenow']
AND isset( $_GET['p_format'] )
AND '-1' != $_GET['p_format']
)
{
$query->query_vars['tax_query'] = array( array(
'taxonomy' => 'post_format'
,'field' => 'ID'
,'terms' => array( $_GET['p_format'] )
) );
}
}
add_filter( 'parse_query', 'wpse26032_admin_posts_filter' );
function wpse26032_restrict_manage_posts_format()
{
wp_dropdown_categories( array(
'taxonomy' => 'post_format'
,'hide_empty' => 0
,'name' => 'p_format'
,'show_option_none' => 'Select Post Format'
) );
}
add_action( 'restrict_manage_posts', 'wpse26032_restrict_manage_posts_format' );
&post_format=aside
làm ví dụ cho URL ... Tuy nhiên !!! .. nó không hoạt động đúng và tạo ra các thông báo / cảnh báo, mà tôi chỉ có thể cho rằng đó là một lỗi vì nó cũng có các tác dụng phụ khác (bạn sẽ thấy ý tôi là gì nếu bạn kiểm tra nó).
Tôi thực sự đã làm việc với một giải pháp cho bạn, chỉ cần viết lại một số phần của mã (vì tôi dựa trên một plugin khác mà tôi đã viết tương tự nhưng đối với các mẫu trang trên các loại phân cấp).
Cái này lớn hơn một chút so với plugin của Bai Internet, vì vậy, bằng mọi cách hãy kiên quyết với giải pháp của anh ấy nếu bạn hài lòng với nó (đừng cảm thấy bắt buộc phải chuyển đổi như tôi đang nói), dù sao tôi cũng sẽ đăng nó lên, vì lợi ích của bất cứ ai có thể quan tâm Nó sẽ hoạt động cho bất kỳ loại bài đăng nào hỗ trợ định dạng bài đăng.
Chỉnh sửa / Cập nhật: Quyết định tôi có thể đặt mã vào một plugin thích hợp, cũng thực hiện tương tự để thêm bộ lọc mẫu trang vào các loại bài đăng phân cấp (các mẫu trang hỗ trợ). Liên kết dưới đây cho bất cứ ai quan tâm,
Hy vọng điều đó hữu ích .. :)
Một lỗi nhỏ, để giữ lựa chọn thả xuống ở định dạng bài đăng thực tế, trong hàm wpse26032_restrict_manage_posts_format :
function wpse26032_restrict_manage_posts_format()
{
$post_format_ID = ( isset( $_GET['p_format'] ) && $_GET['p_format'] != '' ) ? $_GET['p_format'] : -1;
wp_dropdown_categories( array(
'taxonomy' => 'post_format'
,'hide_empty' => 0
,'name' => 'p_format'
,'show_option_none' => 'Select Post Format'
,'selected' => $post_format_ID
) );
}
add_action( 'restrict_manage_posts', 'wpse26032_restrict_manage_posts_format' );
Kể từ WordPress 4.3, chức năng column_title()
sẽ bao gồm định dạng bài đăng dưới dạng biểu tượng bên cạnh tiêu đề bài đăng. Nhấp vào biểu tượng này sẽ tự động lọc danh sách hiện tại sang định dạng bài đã chọn.
(Các) câu trả lời được chấp nhận sẽ tiếp tục hoạt động và hiển thị danh sách thả xuống, tuy nhiên, nó có thể được đơn giản hóa vì chúng ta không cần phải lọc truy vấn sau đó nếu chúng ta sử dụng cùng một biến truy vấn.
add_action( 'restrict_manage_posts', function( $post_type = "" ) {
if ( in_array( $post_type, array( 'post' ) ) ) {
wp_dropdown_categories( array(
'taxonomy' => 'post_format',
'hide_empty' => 0,
'name' => 'post_format', // Do not need to use a custom variable name.
'show_option_all' => 'Select Post Format', // Use 'show_option_all' instead of 'show_option_none' as the default choice.
'value_field' => 'slug',
) );
}
} );
Một phương pháp khác là hiển thị định dạng bài đăng dưới dạng cột riêng. Đoạn mã sau sẽ hiển thị một liên kết sẽ lọc danh sách, mặc dù tôi gặp vấn đề khiến cột này có thể sắp xếp được, vì WordPress không bao gồm bất kỳ truy vấn thuế nào khi tất cả các định dạng được hiển thị.
// Add post format column.
add_action( 'manage_posts_columns', function( $columns ) {
$screen = get_current_screen();
if ( isset( $screen->post_type ) && in_array( $screen->post_type, array( 'post' ) ) ) {
$columns['post_format'] = _( 'Post Format' );
}
return $columns;
} );
// Output post format in column.
add_action( 'manage_posts_custom_column' , function( $column, $post_id ) {
switch( $column ) {
case 'post_format':
$format = get_post_format( $post_id );
echo sprintf( '<a href="%s">%s</a>',
add_query_arg( array( 'post_format' => $format ) ),
__( ucfirst( $format ) ) );
break;
}
}, 10, 2 );
Cả phiên bản ngắn của định dạng, như được cung cấp bởi get_post_format()
và đầu ra phiên bản dài theo wp_dropdown_categories()
, dường như hoạt động theo cùng một cách khi lọc các bài đăng.
get_post_format()
trả về trống khi định dạng bài đăng 'Tiêu chuẩn' mặc định được chọn. Bạn có thể xem xét việc thêm một kiểm tra sau chức năng đó để cột sẽ hiển thị 'Tiêu chuẩn' khi áp dụng. if ( empty( $format ) ) { $format = 'standard'; }