自WordPress 4.3以来column_title()
将在帖子标题旁边的图标中包含帖子格式。单击此图标将自动将当前列表筛选为选定的帖子格式。
接受的答案将继续工作,并显示下拉列表,但是,它可以简化,因为如果我们使用相同的查询变量,则不需要在之后过滤查询。
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\',
) );
}
} );
另一种方法是将post格式显示为自己的列。下面的代码将显示一个链接,该链接将过滤列表,尽管我在对该列进行排序时遇到问题,因为WordPress在显示所有格式时不包括任何税务查询。
// 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 ) ?: \'standard\';
echo sprintf( \'<a href="%s">%s</a>\',
add_query_arg( array( \'post_format\' => $format ) ),
__( ucfirst( $format ) ) );
break;
}
}, 10, 2 );
格式的简短版本,如
get_post_format()
, 和长版本输出
wp_dropdown_categories()
, 在筛选帖子时,似乎以相同的方式工作。
EDIT: get_post_format
如果有错误或未选择格式,将返回false。在这种情况下,可以安全地假定“标准”为所选格式。我已经包括了一个“标准”的回退,当get_post_format()
返回false。