Dim
Новичок

Добрый день, делаю себе сайт на woocommerce использую тему Bidge. Пока делаю на mamp на локалке. Сделал дочернюю тему вношу правки почти все вопросы смог решить, но пару никак не могу победить, я пока нуб двигаюсь по туторам и хелпам, поэтому вопросы может не очень то и умные сорри.
В общем, я сделал радио кнопки на странице оформления заказа по тутору добавив код который привожу ниже в functions.php. Радио кнопки отображаются и выбираются, но есть две проблемы.
1) Когда не выбрана не одна из радио кнопок вместо сообщения прописанного в коде вылезает сообщение " INTERNAL SERVER ERROR ".
2) Если кнопка выбрана заказ проходит успешно но в письме информация из этих радио кнопок не приходит. подкажите как ее можно добавить в письмо.
В общем, я сделал радио кнопки на странице оформления заказа по тутору добавив код который привожу ниже в functions.php. Радио кнопки отображаются и выбираются, но есть две проблемы.
1) Когда не выбрана не одна из радио кнопок вместо сообщения прописанного в коде вылезает сообщение " INTERNAL SERVER ERROR ".
2) Если кнопка выбрана заказ проходит успешно но в письме информация из этих радио кнопок не приходит. подкажите как ее можно добавить в письмо.
PHP:
<?php
/**
* Outputs a rasio button form field
*/
function woocommerce_form_field_radio( $key, $args, $value = '' ) {
global $woocommerce;
$defaults = array(
'type' => 'radio',
'label' => '',
'placeholder' => '',
'required' => false,
'class' => array( ),
'label_class' => array( ),
'return' => false,
'options' => array( )
);
$args = wp_parse_args( $args, $defaults );
if ( ( isset( $args[ 'clear' ] ) && $args[ 'clear' ] ) )
$after = '<div class="clear"></div>';
else
$after = '';
$required = ( $args[ 'required' ] ) ? ' <abbr class="required" title="' . esc_attr__( 'required', 'woocommerce' ) . '">*</abbr>' : '';
switch ( $args[ 'type' ] ) {
case "select":
$options = '';
if ( !empty( $args[ 'options' ] ) )
foreach ( $args[ 'options' ] as $option_key => $option_text )
$options .= '<input type="radio" name="' . $key . '" id="' . $key . '" value="' . $option_key . '" ' . selected( $value, $option_key, false ) . 'class="select">' . $option_text . '' . "\r\n";
$field = '<p class="form-row ' . implode( ' ', $args[ 'class' ] ) . '" id="' . $key . '_field">
<label for="' . $key . '" class="' . implode( ' ', $args[ 'label_class' ] ) . '">' . $args[ 'label' ] . $required . '</label>
' . $options . '
</p>' . $after;
break;
} //$args[ 'type' ]
if ( $args[ 'return' ] )
return $field;
else
echo $field;
}
/**
* Add the field to the checkout
**/
add_action( 'woocommerce_after_checkout_billing_form', 'hear_about_us_field', 10 );
function hear_about_us_field( $checkout ) {
echo '<div id="hear_about_us_field" style="background: lightgoldenrodyellow;"><h3>' . __( 'How\'d you First find us?' ) . '</h3>';
woocommerce_form_field_radio( 'hear_about_us', array(
'type' => 'select',
'class' => array(
'here-about-us form-row-wide'
),
'label' => __( '' ),
'placeholder' => __( '' ),
'required' => false,
'options' => array(
'Google' => 'Google<br/>',
'Other Search' => 'Other Search Engine<br/>',
'Friend' => 'Friend<br/>',
'Friend/Facebook' => 'Facebook/Friend<br/>',
'Cristal' => 'CristalProStyler on YoutTube',
'Other' => 'Other<br/>'
)
), $checkout->get_value( 'hear_about_us' ) );
echo '</div>';
}
/**
* Process the checkout
**/
add_action( 'woocommerce_checkout_process', 'my_custom_checkout_field_process' );
function my_custom_checkout_field_process( ) {
global $woocommerce;
// Check if set, if its not set add an error.
if ( !$_POST[ 'hear_about_us' ] )
$woocommerce->add_error( __( 'Please enter something into this new shiny field.' ) );
}
/**
* Update the order meta with field value
**/
add_action( 'woocommerce_checkout_update_order_meta', 'hear_about_us_field_update_order_meta' );
function hear_about_us_field_update_order_meta( $order_id ) {
if ( $_POST[ 'hear_about_us' ] )
update_post_meta( $order_id, 'How did you hear about us?', esc_attr( $_POST[ 'hear_about_us' ] ) );
}
?>
Последнее редактирование: