Делаю фунционал подарков на сайт. Суть работы такова. Продавец в карточке каждого товара выбирает подарочный товар.
Выглядит это так:
В карточке товара отображается вот так:
Теперь не могу разобраться как добавить его в корзину, и сам заказ. Например когда покупатель добавляет этот товар в корзину, то подарок уже был там. И при оформлении заказа тоже.
Помогите чем сможите, прошу сильно не пинать, я только учусь).
Вот код:
<?php
/*
* Plugin Name: Gift for Products
* Plugin URI: https://triniti.biz.ua
* Description: Подарки для товаров
* Version: 0.1
* Author: Andrey
* Author URI: https://triniti.biz.ua
* License: GPLv2 or later
*/
add_action( 'woocommerce_product_options_general_product_data', 'woo_marketing_fields' );
function woo_marketing_fields() {
global $product, $post;
echo '<div class="options_group">';
woocommerce_wp_select( array(
'id' => '_select_bonus',
'label' => 'Параметри промо-акції',
'options' => array(
'active' => __( 'Акція не проводиться', 'woocommerce' ),
'100uah' => __( 'Бонус 100 грн', 'woocommerce' ),
'200uah' => __( 'Бонус 200 грн', 'woocommerce' ),
),
) );
?>
<p class="form-field gift_product_type">
<label for="gift_product_type">Вибір подарунка</label> <select id="gift_product_type"
name="gift_product_type[]" class="wc-product-search" multiple="multiple" style="width: 50%;" data-placeholder="<?php esc_attr_e( 'Пошук подарункових товарів…', 'woocommerce' ); ?>" data-action="woocommerce_json_search_products_and_variations" data-exclude="<?php echo intval( $post->ID ); ?>">
<?php
$gift_product_id = get_post_meta( $post->ID, '_gift_product_id', true );
$product_ids = ! empty( $gift_product_id ) && isset($gift_product_id) ? array_map( 'absint', $gift_product_id ) : array();
if ( $product_ids ) {
foreach ( $product_ids as $product_id ) {
$product = wc_get_product( $product_id );
$product_name = $product->get_formatted_name();
echo '<option value="' . esc_attr( $product_id ) . '" ' . selected(true, true, false ) . '>' .
esc_html( $product->get_formatted_name() ) . '</option>';
}
}
?>
</select><span class="woocommerce-help-tip" data-tip="Обраний подурунок буде відображатись в карточці товару"></span>
</p>
<?php
echo '</div>';
}
//Вывод подарков в карточке товара///
add_action( 'woocommerce_single_product_summary', 'get_gift_product', 40 ); //Место размещения
//Получаем данные
function get_gift_product() {
global $post;
$product_field_id = get_post_meta( $post->ID, '_gift_product_id', true );
$product_ids_gift = ! empty( $product_field_id ) && isset($product_field_id) ? array_map( 'absint', $product_field_id ) : array();
if ($product_ids_gift){
$product_lists = wc_get_products( array(
'include' => $product_ids_gift,
));
//Выводим в карточке товара
echo '<div class="rol-thumb-cnt">
<div class="rol-thumb-title">ПОДАРУНОК</div>';
foreach ($product_lists as $list){
echo '<div class="rol-thumb">' . $list->get_image([0]) .'
<a href="'. get_permalink($list->get_ID()) .'" class="product-gift-title">'. $list->get_name() .'</a>';
echo '<div class="price_gift"><del><span class="woocommerce-Price-amount amount"> '. $list->get_price() .' грн</span></del><span class="woocommerce-Price-amount amount" id="gift">БЕЗКОШТОВНО</div></div>';
// echo '<div class="gift_img">'. $list->get_image() .'';
//echo'<a href="'. get_permalink($list->get_ID()) .'">'. $list->get_formatted_name() .'</a></div>';
}
echo '</div>';}
}
//Конец кода с выводом подарков
add_action( 'woocommerce_process_product_meta', 'woo_marketing_fields_save', 10 );
function woo_marketing_fields_save( $post_id ) {
// Cохраняем выбраный бонус
$woocommerce_select = $_POST['_select_bonus'];
if ( ! empty($woocommerce_select )) {
update_post_meta( $post_id, '_select_bonus', esc_attr( $woocommerce_select ) );
}
// Сохранение произвольного поля по выбору товаров с поиском
if ( isset( $_POST['gift_product_type'] ) && !empty($_POST['gift_product_type'] ) ) {
// Проверяем данные, если они существуют и не пустые, то записываем данные в поле
update_post_meta( $post_id, '_gift_product_id', array_map( 'absint', (array) $_POST['gift_product_type'] ));
} else {
// Иначе удаляем созданное поле из бд
delete_post_meta( $post_id, '_gift_product_id');
}
}
//Вивод кнопки "Получить бонус"
function product_bonus_button() {
global $post, $product;
$bonus_select = get_post_meta( $post->ID, '_select_bonus', true );
if ( $bonus_select == "200uah") {
echo do_shortcode('[html_block id="17170"]'); }
elseif ( $bonus_select == "100uah") {
echo do_shortcode('[html_block id="17174"]'); }
else ;
}