web-dev-qa-db-ja.com

フロントエンドから一度に複数の投稿を捨てるにはどうすればよいですか。

私はedit.phpのコードを覗き見して、このコードでリンクを生成しています。

wp_nonce_url("/wp-admin/edit.php?doaction=trash&post_type=post&ids=postIds", "bulk-posts")

URLの文字列 "postIds"は、javascriptを介してカンマ区切りの投稿IDに置き換えられます。これまでに行ってきたことは、バックエンドの編集画面にリダイレクトすることだけです。一度に複数の投稿をゴミ箱に捨てるには、このリンクを生成する必要がありますか。

1
Florian

それは "doaction"の代わりにactionであるべきです、それでそれはちょうど上手くいきます。

私が知っている限り、edit.phpで利用可能なパラメータ/アクションについての概要がない限り、あなたがいくつかのドキュメンテーションを要求することに関して。それでは、あなた自身が言ったように、いくつかのソースコードの検査をしましょう、あなたはedit.phpからあなたのアプローチのためのインスピレーションを得ました、それで我々はそこから始めます。
変数 $doaction のために混乱しています。これは次のように設定されています。

$doaction = $wp_list_table->current_action();

$wp_list_table初期化済み であることを知る必要があります。

$wp_list_table = _get_list_table('WP_Posts_List_Table');

そのため、 _get_list_table() を使用すると、

WP_List_Tableクラスのインスタンスを取得します。

この場合、呼び出しから見て、 WP_Posts_List_Table です。

上記のように、アクションを決定するためにメソッド current_action() が呼び出されます。これは実際には親クラスに依存しています

return parent::current_action();

これはクラス WP_List_Table で、アクションは次のように current_action() によって設定されます。

/**
 * 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;
}

認識されている - edit.phpで - パラメータactionの値は次のとおりです。

  • trash
  • untrash
  • edit
  • deleteおよびdelete_all

$doactionの場合はswitch 、そしてその前に delete_allの場合は追加の条件 が見られるので.

4
Nicolai