1
以下のfunction.phpコードを使用して、チェックアウト時に多肢選択フィールドを提供します。注文ページに追加して電子メールに追加します。Woocommerceの管理者の注文リストにカスタムメタフィールドを表示して検索可能にします。
ORDERsの概要管理ページにも、どうやってそれを検索してソート可能にすることができますか?ここで
// add select box for platform used at checkout
add_action('woocommerce_after_order_notes', 'wps_add_select_checkout_field');
function wps_add_select_checkout_field($checkout) {
echo '<h3>'.__('').'</h3>';
woocommerce_form_field('platform', array(
'type' => 'select',
'class' => array('wps-drop'),
'label' => __('On which platform will you be using it?'),
'options' => array(
'blank' => __('-- Choose an option --', 'wps'),
'app1' => __('app1', 'wps'),
'app2' => __('app2', 'wps'),
'app3' => __('app3', 'wps')
)
), $checkout->get_value('platform'));
}
// Process the checkout
add_action('woocommerce_checkout_process', 'wps_select_checkout_field_process');
function wps_select_checkout_field_process() {
global $woocommerce;
// Check if set, if its not set add an error.
if ($_POST['platform'] == "blank")
wc_add_notice('<strong>Please select your primary trading platform that you will be using with our strategy</strong>', 'error');
}
// Update the order meta with field value
add_action('woocommerce_checkout_update_order_meta', 'wps_select_checkout_field_update_order_meta');
function wps_select_checkout_field_update_order_meta($order_id) {
if ($_POST['platform']) update_post_meta($order_id, 'platform', esc_attr($_POST['platform']));
}
// Display field value on the order edition page
add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1);
function wps_select_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('Primary Platform').':</strong> ' . get_post_meta($order->id, 'platform', true) . '</p>';
}
// Add selection field value to emails
add_filter('woocommerce_email_order_meta_keys', 'wps_select_order_meta_keys');
function wps_select_order_meta_keys($keys) {
$keys['platform:'] = 'platform';
return $keys;
}