【发布时间】:2020-05-30 04:33:12
【问题描述】:
我在 optgroup 上阅读了一些我需要的文章,我设法将其显示在结帐页面上,但我需要在电子邮件和我们查看订单详细信息的管理区域中显示所选选项。
代码来自:"WooCommerce Select Dropdown With Optgroup On Checkout"
我需要什么:我正在创建一个网站,我需要在结帐页面上手动添加一些区域,以便用户可以选择他的区域,这样我就可以将其用作验证和限制运输的方式,一旦选择我需要能够在电子邮件订单以及 Woocommerce 区域不适合我的情况下的订单上看到的区域:
<?php
add_action('woocommerce_before_order_notes', 'custom_checkout_select_field_with_optgroup', 10, 1 );
function custom_checkout_select_field_with_optgroup( $checkout ) {
$domain = 'woocommerce';
$title = __("zona", $domain);
$slug = zone_limit;
$default = __("Selecione su Zona", $domain);
$value = $checkout->get_value($slug);
// Region option data array with optgroup
$options = array(
__("North zone", $domain) => array(
'region1' => __("Region 1", $domain),
'region2' => __("Region 2", $domain),
),
__("South zone", $domain) => array(
'region3' => __("Region 3", $domain),
'region4' => __("Region 4", $domain),
)
__("Middle zone", $domain) => array(
'region3' => __("Region 5", $domain),
'region4' => __("Region 6", $domain),
)
);
// The field
echo '<p class="form-row form-row-wide '.$slug.'-dropdown" id="'.$slug.'_field" data-priority="">
<label for="'.$slug.'" class="">'.$title.'</label>
<span class="woocommerce-input-wrapper">
<select name="'.$slug.'" id="'.$slug.'" class="select " data-placeholder="" autocomplete="'.$slug.'">
<option value="">'.$default.'</option>';
// Loop through "optgroup"
foreach( $options as $optgroup_label => $optgroup_options ) {
echo '<optgroup label="'.$optgroup_label.'">';
// Loop through "options" in the "optgroup"
foreach( $optgroup_options as $key => $label ) {
$selected = $value === $key ? ' selected="selected"': '';
echo '<option value="'.$key.'"'.$selected.'>'.$label.'</option>';
}
echo '</optgroup>';
}
echo '</select></span></p>';
}
我试过了,但不走运
add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$fields['meta_key'] = array(
'label' => __( 'Label' ),
'value' => get_post_meta( $order->id, 'meta_key', true ),
);
return $fields;
}
add_filter('woocommerce_email_order_meta_keys', 'my_custom_order_meta_keys');
function my_custom_order_meta_keys( $keys ) {
$keys[] = $value ; // This will look for a custom field called 'Tracking Code' and add it to emails
return $keys;
}
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST[$value ] ) ) {
update_post_meta( $order_id, 'region', sanitize_text_field( $_POST[$value ] ) );
}
}
【问题讨论】:
-
1) 您的代码包含严重错误和警告。 2) 此问题目前包含多个问题。它应该只关注一个问题。请相应地调整您的问题。
-
@7uc1f3r 我调整了问题,关于错误可能是我尝试过的,但是根据我从哪里获得源代码,到目前为止的主要代码是好的
标签: php wordpress woocommerce optgroup