【发布时间】:2021-04-28 17:11:47
【问题描述】:
我成功添加了一个带有多复选框字段的 Metabox,该字段显示在管理单订单页面上并且运行良好。
我正在为那个多复选框使用Multi checkbox fields in Woocommerce backend 答案代码。
// Adding Meta container admin shop_order pages
add_action( 'add_meta_boxes', 'em_add_meta_boxes' );
if ( ! function_exists( 'em_add_meta_boxes' ) )
{
function em_add_meta_boxes()
{
add_meta_box( 'em_other_fields', __('Employee Extra Actions','woocommerce'), 'em_add_other_fields_for_order_empl', 'shop_order', 'side', 'core' );
}
}
// Adding Meta field in the meta container admin shop_order pages
if ( ! function_exists( 'em_add_other_fields_for_order_empl' ) )
{
function em_add_other_fields_for_order_empl()
{
global $post;
echo '<div class="options_group">';
woocommerce_wp_multi_checkbox( array(
'id' => 'employee_actions12',
'name' => 'employee_actions12[]',
'label' => __('Levels', 'woocommerce'),
'options' => array(
'tee' => __( 'MBO', 'woocommerce' ),
'saa' => __( 'HBO', 'woocommerce' ),
'tee1' => __( 'WO', 'woocommerce' ),
)
) );
echo '</div>';
}
}
代码的最后一部分是保存在数据库中,这里是:
add_action( 'save_post', 'save_product_options_custom_fields32', 30, 1 );
function save_product_options_custom_fields32( $post_id ){
if( isset( $_POST['employee_actions12'] ) ){
$post_data = $_POST['employee_actions12'];
// Multi data sanitization
$sanitize_data = array();
if( is_array($post_data) && sizeof($post_data) > 0 ){
foreach( $post_data as $value ){
$sanitize_data[] = esc_attr( $value );
}
}
update_post_meta( $post_id, 'employee_actions12', $sanitize_data );
}
}
我知道代码适用于具有操作的产品页面:'woocommerce_product_process_meta'
所以,我需要帮助来保存在 db 中,修复数组的错误通知(我认为如果我们选择默认值可能会发生这种情况)。
【问题讨论】:
-
如果 thia meta 在 shop_order 页面上,我如何将字段保存到数据库?
-
谢谢@LoicTheAztec,我更新了代码,我将这篇文章用于metabox - stackoverflow.com/questions/37772912/…
-
我终于回答了你的问题……
woocommerce_wp_multi_checkbox()函数在自定义元框上无法正常工作(我再次更新了该函数)……
标签: php arrays wordpress woocommerce custom-fields