为 WordPress文章添加自定义批量操作

建站记录 投稿 来源:无名 4个月前 (01-22) 213次浏览 0个评论
编者:

在知更鸟看到的,修改了,添加了wordpress文章批量发布状态。

默认 WordPress 后台文章批量操作中,只有编辑和移动到回收站,可以按文本方法添加自定义批量操作选项,例如添加批量将文章改为草稿和自动为选中的文章添加自定义字段和值。

第一步 在批量操作下拉列表中添加选项。

// 在批量操作下拉列表中添加选项
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;
}

默认是为文章添加自定义批量操作,页面、评论、媒体等,可以将代码中的:

为页面添加批量操作,请使用:bulk_actions-edit-page

自定义文章类型:bulk_actions-edit-{CPT NAME}

自定义分类法:bulk_actions-edit-{TAXONOMY NAME}

评论:bulk_actions-edit-comments

插件:bulk_actions-plugins

用户:bulk_actions-users

媒体:bulk_actions-upload

第二步 添加处理动作。

// 处理执行
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 ‘<div id=”message” class=”updated notice is-dismissible”>
<p>文章状态已更新。</p>
</div>’;
}

// 添加自定义字段
if( ! empty( $_REQUEST[‘zm_bulk_price_changed’] ) ) {
printf( ‘<div id=”message” class=”updated notice is-dismissible”><p>’ .
_n( ‘有 %s 文章添加了价格自定义字段。’,
‘有 %s 文章添加了价格自定义字段。’,
intval( $_REQUEST[‘zm_bulk_price_changed’] )
) . ‘</p></div>’, intval( $_REQUEST[‘zm_bulk_price_changed’] ) );
}
}

上面代码只起个抛砖引玉的作用,转载的,下面是我修改后的。添加了批量发布

// 在批量操作下拉列表中添加选项
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_make_Publish’] = ‘状态改为发布 ‘;
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_Publish_done’), $redirect );
$redirect = remove_query_arg( array(‘zm_make_draft_done’ ), $redirect );

// 改为发布
if ( $doaction == ‘zm_make_Publish’ ) {
foreach ( $object_ids as $post_id ) {
wp_update_post( array(
‘ID’ => $post_id,
‘post_status’ => ‘Publish’// 发布
) );
$redirect = add_query_arg( ‘zm_make_Publish_done’, count( $object_ids ), $redirect );
}
} elseif ( $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 );
}
return $redirect;
}
// 添加提示文字
add_action( ‘admin_notices’, ‘zm_bulk_action_notices’ );

function zm_bulk_action_notices() {
// 改为草稿
if ( ! empty( $_REQUEST[‘zm_make_draft_done’] ) ) {
echo ‘<div id=”message” class=”updated notice is-dismissible”>
<p>文章状态已更新。</p>
</div>’;
}elseif ( ! empty( $_REQUEST[‘zm_make_Publish_done’] ) ) {
echo ‘<div id=”message” class=”updated notice is-dismissible”>
<p>文章状态已更新。</p>
</div>’;
}
}

 

喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址