Задать вопрос
  • Отправка деталей заказа в телеграм WP Woocommerce (Хук woocommerce_new_order)?

    Kleindberg
    @Kleindberg
    Full stack
    Позвольте и свою лепту внести, вот обновлённый код для последних версий WooCommerce:

    add_action( 'woocommerce_new_order', 'send_order_data', 10, 2);
    function send_order_data( $order_id, $order ) {
    	
    	// Products array
    	$order_items = array();
    	foreach ( $order->get_items() as $item_id => $item ) {
    		if( $item->is_type( 'line_item' ) ) {
    			$product = $item->get_product();
    			$order_items[] = array(
    				'id' => $item->get_product_id(),
    				'name' => $item->get_name(),
    				'url' => get_permalink($product->get_id()),
    				'image' => get_the_post_thumbnail_url($item->get_product_id()),
    				'price' => $product->get_price(),
    				'quantity' => $item->get_quantity(),
    				'total' => $item->get_total(),
    			);	
    		}
    	}
    
    	// Order data
    	$data = array(
    		'id' => $order_id,
    		'first_name' => $order->get_billing_first_name(),
    		'last_name' => $order->get_billing_last_name(),
    		'company' => $order->get_billing_company(),
    		'address_1' => $order->get_billing_address_1(),
    		'address_2' => $order->get_billing_address_2(),
    		'city' => $order->get_billing_city(),
    		'state' => $order->get_billing_state(),
    		'postcode' => $order->get_billing_postcode(),
    		'country' => $order->get_billing_country(),
    		'email' => $order->get_billing_email(),
    		'phone' => $order->get_billing_phone(),
    		'items' => $order_items,
    		'shipping_method' => $order->get_shipping_method(),
    		'payment_method' => $order->get_payment_method_title(),
    		'ttn' => $order->get_transaction_id(),
    		'notes' => $order->get_customer_note(),
    		'cutomer_id' => $order->get_customer_id() ?: $order->get_user_id(),
    		'ip' => $order->get_customer_ip_address(),
    		'agent' => $order->get_customer_user_agent(),
    		'source' => $_SERVER['SERVER_NAME'],
    		'date_created' => date("Y-m-d H:i:s", strtotime($order->get_date_created())),
    		'date_modified' => date("Y-m-d H:i:s", strtotime($order->get_date_modified())),
    		'date_completed' => $order->get_date_completed() ? date("Y-m-d H:i:s", strtotime($order->get_date_completed())) : null,
    		'date_paid' => $order->get_date_paid() ? date("Y-m-d H:i:s", strtotime($order->get_date_paid())) : null,
    	);
    
    	$json = json_encode($data);
    	
    	// Путь к папке uploads
    	$uploads_dir = wp_upload_dir();
    
    	// Создаем путь к файлу (название файла может быть любым)
    	$file_path = $uploads_dir['basedir'] . '/order_'.$order_id.'.json';
    
    	// Записываем информацию в файл
    	file_put_contents($file_path, $json, FILE_APPEND | LOCK_EX);
    
    }


    Функция woocommerce_new_order теперь принимает два аргумента - номер заказа и сам объект заказ, а это очень упрощает работу с заказом. Приведённый код сохраняет информацию о заказе в json файл в папку uploads, но вы можете переписать его и сделать, например, POST отправку через wp_remote_post() или сохранять данные в базу данных с помощью wpdb.
    Ответ написан
    Комментировать
  • Как в WP All Import вытащить данные внутри тега xml?

    nipopadyuk
    @nipopadyuk Автор вопроса
    Решение оказалось простым -

    {./@internal-id}
    Ответ написан
    Комментировать