web-dev-qa-db-fra.com

Liste des messages de l'administrateur (edit.php) par ID de poste

J'écris un plugin qui crée des publications en vrac. Je fournis un moyen pour l'utilisateur de définir certains paramètres des messages créés à l'avance. Mais il serait utile d’utiliser l’interface par défaut "Tous les messages" (edit.php) de WordPress pour affiner les détails après la création des articles. J'ai jeté un coup d'œil au class-wp-list-table.php et la duplication de ses fonctionnalités demandera beaucoup de travail.

La meilleure solution serait simplement d’envoyer l’utilisateur à edit.php - limité aux publications créées par mon plugin. J'ai les identifiants des publications, je recherche donc une solution comme edit.php?id=1&id=2, qui révèle une table de liste Nice contenant uniquement les publications ayant ces identifiants.

1
P_Enrique

Pour ce faire, utilisez pre_get_posts .

Il est important de préfixer tous vos noms de variables, id ne semble pas figurer dans la liste des termes réservés , mais cette pratique évite de toute façon tout problème imprévu.

/**
 * Usage:
 * http://example.com/wp-admin/edit.php?my_pids=4088,4090,4092,4094
 */
add_filter( 'pre_get_posts', 'limit_post_list_wpse_96418' );

function limit_post_list_wpse_96418( $query ) 
{
    // Don't run on frontend
    if( !is_admin() )
        return $query;

    global $pagenow;

    // Restrict to Edit page
    if( 'edit.php' !== $pagenow )
        return $query;

    // Check for our filter
    if( !isset( $_GET['my_pids'] ) )
        return $query;

    // Finally, filter
    $limit_posts = explode( ',', $_GET['my_pids'] ); // Convert comma delimited to array    
    $query->set( 'post__in', $limit_posts );      

    return $query;
}
0
brasofilo