J'ai jeté un coup d'œil au code dans edit.php et je génère maintenant des liens avec ce code:
wp_nonce_url("/wp-admin/edit.php?doaction=trash&post_type=post&ids=postIds", "bulk-posts")
La chaîne "postIds" dans l'URL est remplacée par des identifiants de publication séparés par des virgules via javascript. Jusqu'ici, tout ce que je fais, c'est me rediriger vers l'écran d'édition dans le backend. Comment dois-je générer ce lien pour supprimer plusieurs messages à la fois?
Il devrait être action
au lieu de "doaction", alors cela fonctionnera très bien.
En ce qui concerne votre demande de documentation, pour autant que je sache, aucun aperçu des paramètres/actions disponibles à edit.php
. Faisons donc une inspection du code source, comme vous l'avez dit vous-même, vous avez inspiré votre approche du edit.php
, nous commençons donc par là.
Vous vous êtes trompé à cause de la variable $doaction
, qui est configurée comme ceci:
$doaction = $wp_list_table->current_action();
Nous devons maintenant savoir comment $wp_list_table
est initialisé :
$wp_list_table = _get_list_table('WP_Posts_List_Table');
Donc, en utilisant _get_list_table()
, ce qui
Récupère une instance d'une classe WP_List_Table.
Dans ce cas, comme le montre l'appel, WP_Posts_List_Table
.
Comme vu ci-dessus, la méthode current_action()
est appelée pour déterminer l'action. Cela repose réellement sur la classe parente
return parent::current_action();
qui est la classe WP_List_Table
, où l'action est configurée par current_action()
comme ça:
/**
* Get the current action selected from the bulk actions dropdown.
*
* @since 3.1.0
* @access public
*
* @return string|false The action name or False if no action was selected
*/
public function current_action() {
if ( isset( $_REQUEST['filter_action'] ) && ! empty( $_REQUEST['filter_action'] ) )
return false;
if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] )
return $_REQUEST['action'];
if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] )
return $_REQUEST['action2'];
return false;
}
Reconnu - au edit.php
c'est-à-dire - les valeurs du paramètre action
sont:
trash
untrash
edit
delete
et delete_all
comme on peut le voir dans l'instruction switch
POUR $doaction
et au préalable la condition supplémentaire pour delete_all
.