Intereting Posts
Автоматически добавлять надпись на изображении Удаление URL родительской страницы при сохранении навигационной целостности remove_action возвращает FALSE Пользовательские поля регистрации не отображаются в информации о пользователе Постоянная ссылка для отдельных не работает Чрезвычайно медленный сайт WordPress с 6000 сообщениями Как я могу добавить информацию под именем пользователя на странице users.php? ограниченный rss-канал Как преобразовать математический документ Microsoft Word в сообщение блога WordPress? Как исправить ошибку фида? Некоторые вопросы о том, как правильно добавить 2 CSS-файла в тему WordPress? Добавление кнопки «Добавить запись» для редактирования страницы публикации Как получить URL-адрес для короткого кода? Маршрут к настраиваемому файлу Как удалить дублированных пользователей из двух объединенных объектов WP_User_Query?

Получение функции date_diff возвращает разницу в днях

Я пытаюсь построить функцию, чтобы подсчитать дни, которые требуется для продажи продуктов. Мы продаем уникальные товары от имени наших клиентов, поэтому хорошо знать, для каких целей и управления продуктом используются товары, которые фактически продаются и как долго это требуется.

Кажется, что пользовательская функция получает данные для $order_created_date и $product_date OK и сохраняет их в метаданных позиции заказа, но фактическое вычисление разницы в днях не работает.

Это то, что я достиг до сих пор:

 function mysite_woocommerce_order_completed( $order_id ) { //get order created date and order items $order = NULL; $order_created_date = NULL; $order = wc_get_order($order_id); $order_created_date = $order->order_date; $order_items = $order->get_items(); foreach ($order_items as $item_id => $order_item) { // addin _order_date meta not needed in finished version $product_id = $order_item['product_id']; wc_add_order_item_meta( $item_id, '_order_added_date', $order_created_date ); // adding _product_published_date meta not needed in finished version $product_date = get_the_time( 'Ymd H:i:s', $product_id ); wc_add_order_item_meta( $item_id, '_product_published', $product_date ); // calculate date difference, not working. Needs a check to not add the meta if already added because makes duplicate entries $diff = date_diff( $product_date, $order_created_date ); wc_add_order_item_meta( $item_id, '_days_to_purchase', $diff ); } } add_action( 'woocommerce_order_status_completed', 'mysite_woocommerce_order_completed', 1, 1 ); 

Любая помощь в решении проблемы и рекомендации по оптимизации кода будут оценены. Ура!

Solutions Collecting From Web of "Получение функции date_diff возвращает разницу в днях"

Woohoo, я действительно получил его работу. Пришлось использовать new DateTime() с переменными и $diff->days для отображения дней. Теперь просто чтобы предотвратить дублирование метаинформации в редких случаях, когда какой-либо менеджер магазина меняет статус случайно и обратно между завершенным и некоторым другим статусом. Идеи?

 function mysite_woocommerce_order_completed( $order_id ) { $order = NULL; $order_created_date = NULL; $order = wc_get_order($order_id); $order_created_date = $order->order_date; $order_created_date = new DateTime($order_created_date); $order_items = $order->get_items(); foreach ($order_items as $item_id => $order_item) { $product_id = $order_item['product_id']; $product_date = get_the_time( 'Ymd H:i:s', $product_id ); $product_date = new DateTime($product_date); $diff = date_diff( $product_date, $order_created_date ); // +1 to days to start counting same day sales from 1 day wc_add_order_item_meta( $item_id, '_days_to_purchase', 1 + $diff->days ); } } add_action( 'woocommerce_order_status_completed', 'mysite_woocommerce_order_completed', 10, 1 )