在WordPress的默认后台文章批量操作功能中,我们通常只能选择编辑或移至回收站。然而,通过一些自定义代码,我们可以扩展这些选项,比如将文章批量设置为草稿,或者自动为选中的文章添加特定的自定义字段和值。以下是你需要在当前主题的函数模板(functions.php)中添加的代码,以实现这一功能:
“`php
// 第一步:添加批量操作选项
add_filter(‘bulk_Actions-eDiT-post’, ‘zm_my_bulk_actions’);
function zm_my_bulk_actions($bulk_array){
$bulk_array[‘zm_make_draft’] = ‘设为草稿’;
$bulk_array[‘zm_set_price’] = ‘添加价格字段’;
return $bulk_array;
}
// 第二步:处理批量操作
add_filter(‘handle_bulk_actions-edit-post’, ‘zm_bulk_action_handler’, 10, 3);
function zm_bulk_action_handler($redirect, $doaction, $object_ids){
$redirect = rEMOve_query_arg(array(‘zm_make_draft_done’, ‘zm_bulk_price_changed’), $redirect);
// 设为草稿
if($doaction === ‘zm_make_draft’){
foreach($object_ids as $post_id){
wp_update_post(array(‘ID’ => $post_id, ‘post_status’ => ‘draft’));
}
$redirect = add_query_arg(‘zm_make_draft_done’, count($object_ids), $redirect);
}
// 添加自定义字段
if($doaction === ‘zm_set_price’){
foreach($object_ids as $post_id){
update_post_meta($post_id, ‘product_price’, 1000); // 自定义字段名:product_price,值:1000
}
$redirect = add_query_arg(‘zm_bulk_price_changed’, count($object_ids), $redirect);
}
return $redirect;
}
// 第三步:显示操作完成后的提示信息
add_action(‘admin_notices’, ‘zm_bulk_action_notices’);
function zm_bulk_action_notices(){
// 设为草稿
if(!empty($_REQUEST[‘zm_make_draft_done’])){
echo ‘
文章状态已更新。
‘;
}
// 添加自定义字段
if(!empty($_REQUEST[‘zm_bulk_price_changed’])){
printf(‘
%s篇文章已添加价格自定义字段。
‘, intval($_REQUEST[‘zm_bulk_price_changed’]));
}
}
“`
这段代码适用于文章类型。如果你想在其他对象上应用这些批量操作,例如页面或自定义文章类型,只需更改过滤器和动作的前缀,如 `bulk_actions-edit-page` 或 `bulk_actions-edit-{cptname}`。
请注意,这只是一个基础示例,你可以根据需求调整和扩展这个功能。