MENU

bulk_edit_posts()

bulk_edit_posts() は、投稿一覧画面で複数投稿を選択して「一括編集」した際に呼び出される、バックエンド処理用の関数です。

投稿ステータス、カテゴリー、タグ、カスタムフィールド、カスタムタクソノミーなどを一括で更新する機能を処理します。通常は管理画面から呼ばれるもので、直接使うケースは少ないですが、処理のフックポイントとして活用できます。

目次

機能の説明

この関数は、WordPress の管理画面の投稿一覧で「一括編集」を行った時に送信されるデータ($_POST)を処理し、指定された複数の投稿に対してデータを更新します。

主に以下の内容を更新できます:

  • 投稿ステータス(公開 / 下書き など)
  • カテゴリー / タグ
  • 投稿者
  • カスタムフィールド
  • カスタムタクソノミー
  • コメントの許可設定など

シンプルなコード例

以下のように、bulk_edit_posts()edit.php のフォーム送信時に内部的に呼ばれます。

if ( isset( $_REQUEST['bulk_edit'] ) && isset( $_REQUEST['post'] ) ) {
  bulk_edit_posts(); // 管理画面で自動的に呼び出される
}

通常は管理画面内の admin-ajax.phpedit.php で処理され、開発者が直接呼び出すことは稀です。

使い方の説明

基本的には自分で呼び出すことはなく、$_POST$_REQUEST によって内部的に自動実行されますが、以下のように挙動を拡張したいときに便利です。

一括編集時にフックを追加する例

add_action( 'save_post', 'my_bulk_edit_save', 10, 2 );
function my_bulk_edit_save( $post_id, $post ) {
  if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;

  if ( isset( $_REQUEST['bulk_edit'] ) ) {
    // カスタムフィールドを一括更新など
    update_post_meta( $post_id, 'my_meta_key', '新しい値' );
  }
}

一緒に使うことが多い関連タグ・関数

save_post

投稿の保存時に処理を差し込むために頻繁に使います。

add_action( 'save_post', 'my_custom_save_action' );

admin_init または current_screen()

一括編集時に条件を分岐させるために利用。

追加情報で取得したい場合

カスタムフィールドを一括編集対象にしたい場合、functions.php 等で編集用フィールドを追加して、保存時に save_post フックで処理します。

add_action( 'bulk_edit_custom_box', 'my_bulk_edit_custom_field', 10, 2 );

この関数を利用してのカスタマイズ

カスタムフィールド price を一括編集で更新

  1. 投稿一覧にカスタムフィールド入力欄を追加(JavaScript で)
  2. bulk_edit_posts() に連動して save_post フックで更新
function save_bulk_edit_price( $post_id ) {
  if ( isset( $_REQUEST['bulk_edit'] ) && isset( $_REQUEST['price'] ) ) {
    update_post_meta( $post_id, 'price', sanitize_text_field( $_REQUEST['price'] ) );
  }
}
add_action( 'save_post', 'save_bulk_edit_price' );

想定されるトラブル

$_POST に必要なパラメータが存在しない

一括編集用のフィールド名を間違えると、データが更新されないことがあります。

解決方法

JavaScript 側と PHP 側で、同じ名前のフィールド(例: name="price")を使うように統一しましょう。

Q&A

投稿のカスタムタクソノミーも一括で編集できますか?

はい、HTML 側にフィールドを追加し、bulk_edit_posts() の中で処理されます。

直接この関数を呼び出しても大丈夫?

原則としては推奨されず、代わりに適切なフック(save_postなど)を使うべきです。

まとめ

  • bulk_edit_posts() は WordPress 管理画面の投稿一覧で「一括編集」された時に使用される内部関数。
  • カテゴリー、ステータス、タグ、カスタムタクソノミーなど複数の投稿を一括編集可能。
  • カスタムフィールドを処理したい場合は save_post などのフックを併用するのが基本。
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次