Woocommerce - проверьте, был ли продукт создан менее 60 дней назад - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу проверить, был ли продукт Woocommerce создан менее 60 дней назад.- Если это правда, сделайте что-нибудь.

Я получаю дату, когда продукт был создан в бэкэнде / администраторе, используя официальную функцию Woocmmerce $product->get_date_created.

Мой код частично работает, но, кажется, он проверяет, содержит ли $product->get_date_created буквально значение 60 вместо выполнения вычисления и минус 60 дней с текущего DateTime .

Я пришел к такому выводу, потому что мой оператор IF выполняется верно и применяется ко всем продуктам с "60" в фактической строке DateTime.(например, 31.12.2060) ... это не то, что я хочу.

Любая помощь приветствуется.

Мой код:

add_action( 'woocommerce_before_shop_loop_item_title', 'display_new_loop_woocommerce' );

function display_new_loop_woocommerce() {
    global $product;

  // Get the date for the product published and current date
  $start = date( 'n/j/Y', strtotime( $product->get_date_created() ));
  $today = date( 'n/j/Y' );

  // Get the date for the start of the event and today's date.
  $start      = new \DateTime( $start );
  $end        = new \DateTime( $today );

    // Now find the difference in days.
  $difference = $start->diff( $end );
  $days      = $difference->d;

    // If the difference is less than 60, apply "NEW" label to product archive.             
    if ( $days = (60 < $days) ) {
        echo '<span class="limited">' . __( 'NEW', 'woocommerce' ) . '</span>';
    }
} 

1 Ответ

0 голосов
/ 03 февраля 2019

Я немного пересмотрел ваш код, используя вместо этого методы WC_DateTime, которые сохранят настройки часового пояса в магазине:

add_action( 'woocommerce_before_shop_loop_item_title', 'display_new_loop_woocommerce' );
function display_new_loop_woocommerce() {
    global $product;

    // Get the date for the product published and current date
    $datetime_created  = $product->get_date_created(); // Get product created datetime
    $timestamp_created = $datetime_created->getTimestamp(); // product created timestamp

    $datetime_now      = new WC_DateTime(); // Get now datetime (from Woocommerce datetime object)
    $timestamp_now     = $datetime_now->getTimestamp(); // Get now timestamp

    $time_delta        = $timestamp_now - $timestamp_created; // Difference in seconds
    $sixty_days        = 60 * 24 * 60 * 60; // 60 days in seconds

    // If the difference is less than 60, apply "NEW" label to product archive.
    if ( $time_delta < $sixty_days ) {
        echo '<span class="limited">' . __( 'NEW', 'woocommerce' ) . '</span>';
    }
}

Код помещается в файл function.php вашей активной дочерней темы.(или активная тема).Проверено и работает.

...