web-dev-qa-db-ja.com

[クイック編集]画面にカスタムメタボックスを表示する方法

私はadd_meta_box()を使ってWordPress編集ウィンドウにページと投稿の両方でカスタムメタボックスを追加しました。

このメタボックスを[クイック編集]画面にも表示するにはどうすればよいですか。

理想的には、カテゴリセレクタのすぐ右側に表示するようにします。

23
Scott B

これを行う簡単な方法はないようです、あなたはあなた自身ですべてのコードを追加しなければなりません。 inline_edit_row() 、クイック編集および一括編集画面を描画する関数には、フックできるアクションが1つしかないようです: quick_edit_custom_boxまたはbulk_edit_custom_boxwp_manage_posts_columns() が返すコア以外のすべてのカラムに対して呼び出されます。 manage_posts_columnsのように、列を追加するために使用できるフィルタがいくつかあります。残念なことに、この関数はpostテーブルのカラムヘッダを定義しているので、 print_column_headers() を出力する前にそれを削除するべきです。これはget_column_headers()関数内で manage_[screen_id]_headers filter を使って実行できます。 edit-postは、投稿の編集画面の画面IDです。

まとめると、これは次のようなコードを追加するためのハックを与えます。フォーム送信をどこで処理できるかを知ることは、(現在)読者への課題として残されています。

// Add a dummy column for the `posts` post type    
add_filter('manage_posts_columns', 'add_dummy_column', 10, 2);
function add_dummy_column($posts_columns, $post_type)
{
    $posts_columns['dummy'] = 'Dummy column';
    return $posts_columns;
}
// But remove it again on the edit screen (other screens to?)
add_filter('manage_edit-post_columns', 'remove_dummy_column');
function remove_dummy_column($posts_columns)
{
    unset($posts_columns['dummy']);
    return $posts_columns;
}

// Add our text to the quick edit box
add_action('quick_edit_custom_box', 'on_quick_edit_custom_box', 10, 2);
function on_quick_edit_custom_box($column_name, $post_type)
{
    if ('dummy' == $column_name) {
        echo 'Extra content in the quick edit box';
    }
}

// Add our text to the bulk edit box
add_action('bulk_edit_custom_box', 'on_bulk_edit_custom_box', 10, 2);
function on_bulk_edit_custom_box($column_name, $post_type)
{
    if ('dummy' == $column_name) {
        echo 'Extra content in the bulk edit box';
    }
}
22
Jan Fabry