У меня есть код, который отображает флажок на странице редактирования продукта.
Вот мой код:
// Display Roast Level Custom Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_roast_general_fields' );
function woo_roast_general_fields() {
// Create a custom checkbox field
// Checkbox
woocommerce_wp_checkbox(
array(
'id' => '_roast',
'label' => __('Roast Level', 'woocommerce' ),
'description' => __( 'Enable roast level!', 'woocommerce' )
)
);
}
// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_roast_general_fields_save' );
/** Hook callback function to save custom fields information */
function woo_roast_general_fields_save( $post_id ) {
// Save Checkbox
$checkbox = isset( $_POST['_roast'] ) ? 'yes' : 'no';
update_post_meta( $post_id, '_roast', $checkbox );
}
Когда вы нажимаете этот флажок, на странице одногопродукт, поле выбора должно отображаться.После выбора параметров эти данные должны отображаться в корзине покупок, на странице оформления заказа, на странице благодарности, по электронной почте и при редактировании заказа.
Вот мой второй код:
// The product custom field before add-to-cart button
add_action( 'woocommerce_before_add_to_cart_button', 'woo_roast_custom_field' );
function woo_roast_custom_field() {
global $product;
echo '<div>';
woocommerce_form_field( 'roast_custom_field', array(
'type' => 'select',
'class' => array('my-field-class form-row-wide'),
'label' => __('Roast Level'),
'required' => false,
'options' => array(
'' => 'Please select',
'Blue' => 'Blue',
'Rare' => 'Rare',
'Medium Rare' => 'Medium Rare',
'Medium' => 'Medium',
'Medium Well' => 'Medium Well',
'Well Done' => 'Well Done'
)), '' );
echo '</div>';
}
// Save the new unique value in the array of values (as product meta data)
add_action( 'woocommerce_add_to_cart', 'roast_custom_field_add_to_cart', 20, 6 );
function roast_custom_field_add_to_cart( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ){
if( isset($_POST['roast_custom_field']) ){
// Get the array of existing values
$roast_values = (array) get_post_meta( $product_id, '_roast_custom_field_values', true );
// append the new value to the array of values
$roast_values[] = sanitize_text_field( $_POST['roast_custom_field'] );
// Save the appended array
update_post_meta( $product_id, '_roast_custom_field_values', $roast_values );
}
}
Но, к сожалению, я не знаю, как сделать условие, чтобы при нажатии на флажок на странице отдельного товара появилось поле выбора.
Следует отметить, что еслифлажок не активен, поэтому поле выбора не должно отображаться на странице отдельного продукта.
Кроме того, я не совсем уверен в правильности кода при сохранении данных.
Прошу вашей помощи!