it-swarm.com.de

Wie filtere ich nach Post-Format in admin?

Ich muss meine Beiträge in admin nach Post-Formaten filtern?

Wie kann ich das machen ?

In Wordpress können Sie vorerst nach Kategorien und Daten filtern.

7
Steffi

Probieren Sie dieses Plugin aus:

<?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' );
8
Bainternet

Ich habe eigentlich schon an einer Lösung für Sie gearbeitet, musste nur einige Teile des Codes umschreiben (weil ich es auf Basis eines anderen Plugins geschrieben habe, das dasselbe tut, aber für Seitenvorlagen auf hierarchischen Typen).

Dies ist ein bisschen größer als das Plugin von Bainternet, also bleib auf jeden Fall bei seiner Lösung, wenn du damit zufrieden bist (fühle dich nicht verpflichtet zu wechseln, das 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 zu integrieren. Dasselbe gilt für das Hinzufügen eines Seitenvorlagenfilters zu hierarchischen Beitragstypen (die Seitenvorlagen unterstützen). Weiter unten für jeden verlinkt interessiert,

Hoffe das ist hilfreich .. :)

2
t31os

Ein kleiner Bugfix, um die Dropdown-Auswahl auf das tatsächliche Post-Format zu beschränken, 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' );
1
nderambure

Seit WordPress 4.3 enthält die Funktion column_title() das Beitragsformat als Symbol neben dem Beitragstitel. 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 kann jedoch vereinfacht werden, da die Abfrage anschließend nicht gefiltert werden muss, wenn dieselben Abfragevariablen verwendet werden.

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 kurze Version des Formats, wie sie von get_post_format() bereitgestellt wird, als auch die lange Version, die von wp_dropdown_categories() ausgegeben wird, scheinen beim Filtern von Beiträgen auf dieselbe Weise zu funktionieren.

0
Shaun Cockerill