NEW!Новая публикация в разделе WordPress Читать
WordPress

Плагин Pre-Orders for WooCommerce: Отключение обязательной даты предзаказа

1 Мин. чтения

Чтобы была возможность отображения текста предзаказа на кнопке «Купить» и в описании товара в корзине, без выбора даты предзаказа в плагине «Pre-Orders for WooCommerce», вам понадобится выполнить несколько шагов:

## Перед началом, убедитесь, что у вас создан полный бэкап сайта
 
  • Перейти в настройки плагина — pre-orders-for-woocommerce/src/Shop.php.
  • Измените код функций changeButtonTextForVariableProducts() и changeButtonText().
  • 
    //pre-orders-for-woocommerce/src/Shop.php
    
    public function changeButtonTextForVariableProducts( $data, $product, $variation ) {
     if ( get_post_meta( $variation->get_id(), '_is_pre_order', true ) == 'yes' || get_post_meta( $variation->get_id(), '_stock_status', true ) == 'onbackorder') {
       $data['is_pre_order'] = true;
     }
       return $data;
    }
    
    public function changeButtonText( $text ) {
     global $post, $product;
    
     if ( $product !== null ) {
      if ( 'yes' == get_post_meta( $post->ID, '_is_pre_order', true ) || get_post_meta( $post->ID, '_stock_status', true ) == 'onbackorder') {
       return get_option( 'wc_preorders_button_text', 'Pre Order Now!' );
      }
     }
    
     return $text;
    }
    
  • В файле pre-orders-for-woocommerce/src/Notices.php изменить функцию addPreorderNotice.
  • 
    //pre-orders-for-woocommerce/src/Notices.php
    
    public function addPreorderNotice( $cartItem ) {
     $product = $cartItem['data'];
     if ( get_post_meta( $product->get_id(), '_pre_order_date', true ) !== null && get_post_meta( $product->get_id(), '_pre_order_date', true ) != '') {
      $availableFrom = new \DateTime( get_post_meta( $product->get_id(), '_pre_order_date', true ) );
      $now           = new \DateTime();
    
      $diff = $now->diff( $availableFrom )->format( '%a' );
    
      if ( $availableFrom > $now && $diff > 0 ) {
       $notice = '
    ' . get_option( 'wc_preorders_cart_product_text', 'Note: this item will be available for shipping in {days_left} days' ) . '';
    
       echo apply_filters( 'preorder_avaiable_date_text_cart', str_replace( '{days_left}', $diff, $notice ), $diff );
    
      }
     }
     else if (get_post_meta( $product->get_id(), '_stock_status', true ) == 'onbackorder') {
      echo 'Предзаказ';
     }
    }
Подписка на рассылку статей и обновлений плагинов

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии