如何防止在批量编辑期间清除自定义域?

时间:2011-11-15 作者:Geert

在保存自定义字段值的函数中,我添加了一些检查,以防止在自动保存或快速编辑期间清除这些值。

add_action(\'save_post\', \'save_my_post\');
function save_my_post($post_id)
{
    // Stop WP from clearing custom fields on autosave,
    // and also during ajax requests (e.g. quick edit).
    if ((defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) || (defined(\'DOING_AJAX\') && DOING_AJAX))
        return;

    // Clean, validate and save custom fields
    $myfield = ( ! isset($_POST[\'myfield\'])) ? \'\' : strval($_POST[\'myfield\']);
    update_post_meta($post_id, \'myfield\', $myfield);
}
但是,在批量编辑的情况下,自定义字段似乎仍然被清除。这个DOING_AUTOSAVEDOING_AJAX 检查不适用于批量编辑。

我知道你不能打电话update_post_meta 如果适用$_POST 未设置变量。不过,在复选框的情况下,这是行不通的。

理想情况下,一个简单的检查来确定我们是否处于批量编辑中,就可以完成这项工作。想法?

1 个回复
最合适的回答,由SO网友:Geert 整理而成

您可以通过查看bulk_edit 变量输入$_GET$_POST. 据我调查,批量编辑通常是GET请求。

请注意$_REQUEST 同时考虑GET和POST数据。在里面wp-admin/edit.php 他们也会isset() 检查$_REQUEST[\'bulk_edit\'].

function save_my_post($post_id)
{
    // Do nothing during a bulk edit
    if (isset($_REQUEST[\'bulk_edit\']))
        return;

    // ...
}

结束

相关推荐

Custom bulk_action

我想向自定义帖子类型添加自定义批量操作。我碰到了过滤器bulk_actions-screenid, 根据其documentation, 完全按照我的意愿去做。然而,经过大约两个小时的调试,我发现了以下评论// This filter can currently only be used to remove actions. 在wp类列表的第278行。php-太棒了!我想我可以通过使用jQuery将操作作为选项注入来破解它/** * Hack to add a custom bulk action