Antworten:
Versuchen Sie dieses Plugin, das ich erfunden habe:
<?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
der URL ein Beispiel hinzufügen ... Allerdings !!! .. es funktioniert nicht ganz richtig und generiert Hinweise / Warnungen, von denen ich nur annehmen kann, dass es sich um einen Fehler handelt, da es auch andere Nebenwirkungen hat (Sie werden sehen, was ich meine, wenn Sie es testen).
Ich habe tatsächlich bereits an einer Lösung für Sie gearbeitet, musste nur einige Teile des Codes neu schreiben (weil ich es auf einem anderen Plugin basiert habe, das ich geschrieben habe und das dasselbe tut, aber für Seitenvorlagen auf hierarchischen Typen).
Dies ist etwas größer als das Plugin von Bainternet. Halten Sie sich also auf jeden Fall an seine Lösung, wenn Sie damit zufrieden sind (fühlen Sie sich nicht verpflichtet zu wechseln, ist alles, was ich sage). Ich werde es trotzdem veröffentlichen. für alle, die interessiert sein könnten. Es funktioniert für jeden Beitragstyp, der Beitragsformate unterstützt.
Bearbeiten / Aktualisieren: Ich habe beschlossen, den Code auch in ein geeignetes Plugin einzufügen. Das Gleiche gilt auch für das Hinzufügen eines Seitenvorlagenfilters zu hierarchischen Beitragstypen (die Seitenvorlagen unterstützen). Unten verlinkt für alle Interessierten,
Hoffe das ist hilfreich .. :)
Ein kleiner Bugfix, um die Dropdown-Auswahl auf dem tatsächlichen Post-Format zu halten, in der Funktion 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' );
Seit WordPress 4.3 enthält die Funktion column_title()
das Post-Format als Symbol neben dem Post-Titel. Durch Klicken auf dieses Symbol wird die aktuelle Liste automatisch nach dem ausgewählten Beitragsformat gefiltert.
Die akzeptierten Antworten funktionieren weiterhin und zeigen die Dropdown-Liste an. Sie können jedoch vereinfacht werden, da wir die Abfrage anschließend nicht filtern müssen, wenn wir dieselben Abfragevariablen verwenden.
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',
) );
}
} );
Eine alternative Methode besteht darin, das Post-Format als eigene Spalte anzuzeigen. Der folgende Code zeigt einen Link an, der die Liste filtert, obwohl ich Probleme habe, diese Spalte sortierbar zu machen, da WordPress keine Steuerabfragen enthält, wenn alle Formate angezeigt werden.
// 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 );
Sowohl die Kurzversion des Formats, wie von bereitgestellt get_post_format()
, als auch die Langversion , die von ausgegeben wird wp_dropdown_categories()
, scheinen beim Filtern von Posts auf dieselbe Weise zu funktionieren.
get_post_format()
Gibt leer zurück, wenn das Standard-Postformat "Standard" ausgewählt ist. Sie können nach dieser Funktion auch eine Prüfung hinzufügen, damit in der Spalte gegebenenfalls "Standard" angezeigt wird. if ( empty( $format ) ) { $format = 'standard'; }