РЕДАКТИРОВАТЬ: Решено.Я отредактировал пост с решением.=)
Я пытаюсь заполнить поле выбора на странице оформления заказа значениями из пользовательского поля продукта.Большинство из них работает как талисман, но есть проблема с получением значения на странице оформления заказа.
Создание и сохранение настраиваемого поля
// Display Fields in Backend
add_action( 'woocommerce_product_options_general_product_data', 'srd_add_custom_general_fields' );
// Save Fields
add_action( 'woocommerce_process_product_meta', 'srd_add_custom_general_fields_save' );
// Create Fields
function srd_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
woocommerce_wp_textarea_input(
array(
'id' => '_einstiegsorte',
'label' => __( 'Einstiegsorte', 'woocommerce' ),
'placeholder' => '',
'description' => __( '', 'woocommerce' )
)
);
}
Сохранить данные
function srd_add_custom_general_fields_save( $post_id ){
$woocommerce_textarea = $_POST['_einstiegsorte'];
if( !empty( $woocommerce_textarea ) )
update_post_meta( $post_id, '_einstiegsorte', esc_html( $woocommerce_textarea ) );
Вывести данные по одному продукту и архиву
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_fields_ausgabe_archive', 2 );
add_action( 'woocommerce_single_product_summary', 'custom_fields_ausgabe', 6);
function custom_fields_ausgabe(){
$list_items = get_post_meta(get_the_ID(), '_einstiegsorte', true);
if($list_items){?>
$list_items = explode("\n", $list_items);
echo '<ul>';
foreach($list_items as $list_item) {
echo '<li>' . $list_item . '</li>';
}
echo '</ul>';
}
}
Добавить поле выбора на страницу оформления заказа и заполнить данными '_einstiegsorte '
add_action('woocommerce_before_checkout_form', 'einstiegswahl_select');
function einstiegswahl_select() {
foreach ( WC()->cart->get_cart() as $cart_item ) {
$item = $cart_item['data'];
if(!empty($item)){
$product = new WC_product($item->id);
//$pd_numbers = get_post_meta( $cart_item[ 'product_id' ], '_einstiegsorte', true );
$list_items['choices'] = array();
$list_items = get_post_meta( $cart_item[ 'product_id' ], '_einstiegsorte', true );
if($list_items){
$list_items = explode("\n", $list_items);
echo '<select name=einstiegswahl>';
foreach($list_items as $list_item) {
echo '<option>' . $list_item . '</option>';
}
echo '</select>';
}}}}