问题描述

我已经使用 add_meta_box() 在 WordPress 编辑窗口的两个页面和帖子上添加一个自定义元框。

如何使这个元框也显示在”Quick Edit” 屏幕上?

理想情况下,我希望它出现在 「类别」 选择器的右侧。

最佳解决方案

似乎没有简单的方法来做到这一点,你必须自己添加所有代码。绘制 「快速编辑」 和 「批量编辑」 屏幕的功能 inline_edit_row()似乎只有一个可以挂接到的操作:quick_edit_custom_boxbulk_edit_custom_box 。它被称为 wp_manage_posts_columns()返回的所有 non-core 列。有一些可用于添加列的过滤器,例如 manage_posts_columns 。不幸的是,此函数定义了表格的列标题,因此您应该在 print_column_headers()打印之前再次删除它。这可以在 get_column_headers()功能中使用 manage_[screen_id]_headers 滤波器完成。 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';
    }
}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。