J'essaie de créer des liens tels que ceux de l'onglet publication (voir l'image ci-dessous).
J'ai créé mon WP_List_table
mais je ne sais pas comment créer ces liens ni comment les amener à afficher une requête de base de données différente.
Je connais la fonction extra_tablenav
dans la classe, mais cela ajoute des éléments après la zone d'action globale, de sorte que cela ne semble pas faire ce que je veux.
Comme mentionné dans les commentaires, s'il s'agit d'une table existante à laquelle vous souhaitez ajouter/supprimer des liens, voir cette réponse .
S'il s'agit d'une sous-classe personnalisée de WP_List_Table
, par exemple:
class Wpse56883_WP_List_Table extends WP_List_Table{
//Class methods here
}
Ensuite, vous ajoutez ces liens en redéfinissant la méthode get_views()
. Cela devrait retourner un tableau: array ( id => link )
. Cela devrait renvoyer à la page, en attachant une valeur à une variable de requête (que j'appellerai customvar
).
Lors de la construction des liens, recherchez la valeur actuelle pour customvar
et ajoutez conditionnellement la classe current
pour mettre en surbrillance la vue actuelle en gras.
Alors (à l'intérieur) de votre classe.
function get_views(){
$views = array();
$current = ( !empty($_REQUEST['customvar']) ? $_REQUEST['customvar'] : 'all');
//All link
$class = ($current == 'all' ? ' class="current"' :'');
$all_url = remove_query_arg('customvar');
$views['all'] = "<a href='{$all_url }' {$class} >All</a>";
//Foo link
$foo_url = add_query_arg('customvar','foo');
$class = ($current == 'foo' ? ' class="current"' :'');
$views['foo'] = "<a href='{$foo_url}' {$class} >Foo</a>";
//Bar link
$bar_url = add_query_arg('customvar','bar');
$class = ($current == 'bar' ? ' class="current"' :'');
$views['bar'] = "<a href='{$bar_url}' {$class} >Bar</a>";
return $views;
}
Ensuite, dans votre méthode prepare_items
, vous pouvez récupérer la méthode customvar
et modifier votre requête en fonction de sa valeur.
function prepare_items(){
//Retrieve $customvar for use in query to get items.
$customvar = ( isset($_REQUEST['customvar']) ? $_REQUEST['customvar'] : 'all');
}
Remarque: Les liens peuvent être utilisés pour effectuer des actions. Je voudrais stocker la valeur 'action' dans la variable de requête action
(n'oubliez pas d'utiliser des nonces!). Ensuite, connectez-vous à load-{$hook}
( voir Codex ), vérifiez les autorisations et les autorisations, puis effectuez l'action.
Si vous envisagez d'inclure des "liens d'action", assurez-vous d'utiliser des nonces. Vous devez uniquement afficher le lien pour les utilisateurs disposant des fonctionnalités nécessaires.
Vous devez appeler views();
lors du rendu du contenu de la page.
Mettez <?php $wp_list_table->views(); ?>
après le titre de la page et avant le formulaire.
Voir:\wp-admin\edit.php pour savoir quand est appelé.