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.
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;
}