最近访客
百度未收录

利用代码实现WordPress后台添加自定义批量操作文章功能

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

利用代码实现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-post 改为:

为页面添加批量操作,请使用: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\'] ) );
    	}
    }

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

温馨提示: 本文最后更新于2022/10/20 04:34:37。若文章内容或图片失效,请 留言联系站长反馈!
!
也想出现在这里? 联系我们
创意广告
© 版权声明
THE END
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容