web-dev-qa-db-fra.com

Comment ajouter un filtre dans "Commentaires" sur le panneau d'administration?

J'ai trouvé tellement d'informations et la plupart des tutoriels ne parlent que d'ajouter un filtre dans post/post personnalisé uniquement.

Je souhaite faire quelque chose de similaire à ce didacticiel dans la zone "Commentaires" du panneau d'administration.

Ajouter un menu de filtrage à la liste des publications (de type personnalisé) afin de filtrer les publications en fonction des valeurs de champ personnalisées

Cependant, je ne sais pas si le descripteur parse_query traite également la requête dans cette zone? Quelqu'un pourrait avoir une suggestion sur le tutoriel, un plugin qui pourrait aider?

4
user19815

Exemple de travail  [Mise à jour]

De this Answer , de @TheDeadMedic, voici une adaptation permettant d'afficher uniquement les commentaires d'un post_id spécifique. Un lien vers cette action est inséré dans la ligne d'état.

Hello World est le courrier avec l'ID 53.

new comments status link

Lorsque vous cliquez dessus, seuls les commentaires de cet article sont affichés dans l'URL.
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;
}

Crochets utiles

Recherchez les crochets ci-dessous, ils sont disponibles dans le fichier /wp-admin/includes/class-wp-comments-list-table.php.

Cela vous donnera un panorama des possibilités de l'écran Commentaires.

Actes

Les filtres

4
brasofilo