web-dev-qa-db-fra.com

Comment puis-je supprimer plusieurs messages à la fois depuis le début?

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?

1
Florian

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 .

4
Nicolai