WordPress教程

代码实现为 WordPress 后台文章添加自定义批量操作

也想出现在这里?联系我们
创客云

默认 WordPress 后台文章批量操作中,只有编辑和移动到回收站,可以按文本方法添加自定义批量操作选项,例如添加批量将文章改为草稿和自动为选中的文章添加自定义字段和值。将下面代码添加到当前主题函数模板 functions.php 中,最终效果:
代码实现为 WordPress 后台文章添加自定义批量操作

第一步

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

也想出现在这里?联系我们
创客主机
  1.     // 在批量操作下拉列表中添加选项
  2.     add_filter( 'bulk_actions-edit-post', 'zm_my_bulk_actions' );
  3.  
  4.     function zm_my_bulk_actions( $bulk_array ) {
  5.     	$bulk_array['zm_make_draft'] = '状态改为草稿';
  6.     	$bulk_array['zm_set_price'] = '添加自定义字段 ';
  7.     	return $bulk_array;
  8.     }

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

  1. 为页面添加批量操作,请使用:bulk_actions-edit-page
  2.  
  3. 自定义文章类型:bulk_actions-edit-{CPT NAME}
  4.  
  5. 自定义分类法:bulk_actions-edit-{TAXONOMY NAME}
  6.  
  7. 评论:bulk_actions-edit-comments
  8.  
  9. 插件:bulk_actions-plugins
  10.  
  11. 用户:bulk_actions-users
  12.  
  13. 媒体:bulk_actions-upload

第二步

添加处理动作

  1.     // 处理执行
  2.     add_filter( 'handle_bulk_actions-edit-post', 'zm_bulk_action_handler', 10, 3 );
  3.  
  4.     function zm_bulk_action_handler( $redirect, $doaction, $object_ids ) {
  5.     	$redirect = remove_query_arg( array( 'zm_make_draft_done', 'zm_bulk_price_changed' ), $redirect );
  6.  
  7.     	// 改为草稿
  8.     	if ( $doaction == 'zm_make_draft' ) {
  9.     		foreach ( $object_ids as $post_id ) {
  10.     			wp_update_post( array(
  11.     				'ID' => $post_id,
  12.     				'post_status' => 'draft'// 草稿
  13.     			) );
  14.     		}
  15.  
  16.     		$redirect = add_query_arg( 'zm_make_draft_done', count( $object_ids ), $redirect );
  17.     	}
  18.  
  19.     	// 添加自定义字段
  20.     	if ( $doaction == 'zm_set_price' ) {
  21.     		foreach ( $object_ids as $post_id ) {
  22.     			update_post_meta( $post_id, 'product_price', 1000 );// 自定义字段名称:product_price,值:1000
  23.     		}
  24.     		$redirect = add_query_arg( 'zm_bulk_price_changed', count( $object_ids ), $redirect );
  25.     	}
  26.     	return $redirect;
  27.     }

第三步

添加处理后的提示文字

  1.     // 添加提示文字
  2.     add_action( 'admin_notices', 'zm_bulk_action_notices' );
  3.  
  4.     function zm_bulk_action_notices() {
  5.     	// 改为草稿
  6.     	if ( ! empty( $_REQUEST['zm_make_draft_done'] ) ) {
  7.     		echo '<div id="message" class="updated notice is-dismissible">
  8.     			<p>文章状态已更新。</p>
  9.     		</div>';
  10.     	}
  11.  
  12.     	// 添加自定义字段
  13.     	if( ! empty( $_REQUEST['zm_bulk_price_changed'] ) ) {
  14.     		printf( '<div id="message" class="updated notice is-dismissible"><p>' .
  15.     			_n( '有 %s 文章添加了价格自定义字段。',
  16.     			'有 %s 文章添加了价格自定义字段。',
  17.     			intval( $_REQUEST['zm_bulk_price_changed'] )
  18.     		) . '</p></div>', intval( $_REQUEST['zm_bulk_price_changed'] ) );
  19.     	}
  20.     }

上面代码只起个抛砖引玉的作用,具体怎么使用,发挥你的想像力吧。

收藏
(0)

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

发表评论

热销模板

Hub - 响应式可视化编辑企业官网WordPress汉化模板

Envato

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!

精品专区

Contact us all-in-one button with callback - 轻量级侧边按钮客服插件,允许设置自定义的提示语,还支持添加无限数量的联系方式,不仅支持国内的微信二维码、QQ等主流程序,还支持几乎所有国外的热门社交工具、及时聊天程序等,演示参考我们官网右下角客服按钮。

购买插件