Я пытаюсь удалить кнопку add to cart
из заказанных товаров, товаров, которые пользователь разместил заказ.Например, когда пользователь оформляет заказ на 1 или несколько товаров, когда он размещает свой заказ, а затем удаляет кнопку add to cart
только с этих заказанных товаров, кнопка должна удалять временные, а не постоянные.Поскольку на странице оформления заказа я добавил новое поле с именем Date Of Event
.
. Оно должно работать следующим образом: если пользователь выберет дату 7/4/2019 or 9/4/2019
во время оформления заказа на странице оформления заказа и разместит свой заказ, то кнопка add to cart
удалит из заказанных товаров только для того дня, который пользователь выбрал во время оформления заказа в Date Of Event Field
.
Я пытаюсь удалить кнопку «Добавить в корзину» из заказанных товаров, но посмотрите, что я пробовал, Это удаляет добавлениекнопку в корзину из всех продуктов, даже если эти продукты не заказаны.
Пожалуйста, помогите.
Добавлен код настраиваемого поля:
add_action('woocommerce_after_checkout_billing_form', 'date_of_event_field');
function date_of_event_field($checkout){
echo '<div id="date_of_event_field" class="margin-top-20">';
woocommerce_form_field( 'date_of_event', array(
'type' => 'date',
'class' => array('my-field-class form-row-wide'),
'label' => __('Date Of Event'),
'required' => true,
), $checkout->get_value( 'date_of_event' ));
echo '</div>';
}
Попытка удалить кнопку добавления в корзину иззаказанные продукты, но кнопка удаления из всех продуктов:
function hidecart() {
$found = has_bought_items();
if (!empty($found)) {
$event_date = $_POST['date_of_event'];
if ($found === $event_date) {
return false;
}
}
}
add_filter('woocommerce_is_purchasable', 'hidecart', 10, 1);
function has_bought_items() {
$bought = false;
$event_date = $_POST['date_of_event'];
//get product id if single or for shop page u will have to retrieve in some other way
$product_id = get_the_ID();
$customer_orders = get_posts(array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => 'shop_order', // WC orders post type
'post_status' => 'wc-completed' // Only orders with status "completed"
));
foreach ($customer_orders as $customer_order) {
// Updated compatibility with WooCommerce 3+
$order_id = method_exists($order, 'get_id') ? $order->get_id() : $order->id;
$order = wc_get_order($customer_order);
// Iterating through each current customer products bought in the order
foreach ($order->get_items() as $item) {
// WC 3+ compatibility
if (version_compare(WC_VERSION, '3.0', '<'))
$order_product_id = $item['product_id'];
else
$order_product_id = $item->get_product_id();
// Your condition related to your 2 specific products Ids
if ($product_id == $product_id) {
$bought = true;
$event_date = $_POST['date_of_event'];
// you can fetch your event date stored as order meta
return $event_date;
}
}
}
return $event_date;
}
Может кто-нибудь помочь?
Я застрял.