it-swarm.com.de

Wie füge ich Filter in "Kommentare" im Admin-Bereich hinzu?

Ich habe so viele Informationen gefunden, und die meisten Tutorials befassen sich nur mit dem Hinzufügen von Filtern nur in Beiträgen/benutzerdefinierten Beiträgen.

Ich möchte etwas Ähnliches wie dieses Tutorial im Bereich "Kommentare" im Admin-Bereich ausführen.

Filtermenü zur Admin-Liste der Beiträge (benutzerdefinierten Typs) hinzufügen, um Beiträge nach benutzerdefinierten Feldwerten zu filtern

Ich bin mir jedoch nicht sicher, ob das parse_query-Handle auch die Abfrage in diesem Bereich behandelt. Hat vielleicht jemand einen Vorschlag für ein Tutorial, das helfen könnte?

4
user19815

Arbeitsbeispiel  [Update]

Aus diese Antwort , von @TheDeadMedic, hier ist eine Anpassung, um nur Kommentare von einem bestimmten post_id anzuzeigen. Ein Link zu dieser Aktion wird in die Statuszeile eingefügt.

Hello World ist die Post mit der ID 53.

new comments status link

Wenn Sie darauf klicken, werden nur die Kommentare dieses Beitrags in der URL angezeigt
example.com/wp-admin/edit-comments.php?comment_status=all&hello_world=1:

 show comments of only one post 

add_action( 'current_screen', 'wpse_72210_comments_exclude_lazy_hook', 10, 2 );

/**
 * Delay hooking our clauses filter to ensure it's only applied when needed.
 */
function wpse_72210_comments_exclude_lazy_hook( $screen )
{
    if ( $screen->id != 'edit-comments' )
        return;

    // Check if our Query Var is defined    
    if( isset( $_GET['hello_world'] ) )
        add_action( 'pre_get_comments', 'wpse_63422_list_comments_from_specific_post', 10, 1 );

    add_filter( 'comment_status_links', 'wpse_63422_new_comments_page_link' );
}

/**
 * Only display comments of specific post_id
 */ 
function wpse_63422_list_comments_from_specific_post( $clauses )
{
    $clauses->query_vars['post_id'] = 53;
}

/**
 * Add link to specific post comments with counter
 */
function wpse_63422_new_comments_page_link( $status_links )
{
    $count = get_comments( 'post_id=53&count=1' );

    if( isset( $_GET['hello_world'] ) ) 
    {
        $status_links['all'] = '<a href="edit-comments.php?comment_status=all">All</a>';
        $status_links['hello'] = '<a href="edit-comments.php?comment_status=all&hello_world=1" class="current">Hello World ('.$count.')</a>';
    } 
    else 
    {
        $status_links['hello'] = '<a href="edit-comments.php?comment_status=all&hello_world=1">Hello World ('.$count.')</a>';
    }

    return $status_links;
}

Nützliche Haken

Suchen Sie nach den folgenden Haken, sie sind in der Datei /wp-admin/includes/class-wp-comments-list-table.php verfügbar.

Sie erhalten einen Überblick über die Möglichkeiten des Kommentarbildschirms.

Aktionen

Filter

4
brasofilo