#wordpress #woocommerce #dokan
#wordpress #woocommerce #dokan
Вопрос:
Я использую плагин woocommerce и dokan в WordPress. После того, как я пытаюсь заказать продукт у нескольких поставщиков, я получаю номер дополнительного заказа на странице благодарности. Я пытаюсь получить номер дополнительного заказа, запустив этот код ниже, но не работает.
//example order id
$order = wc_get_order(1234);
$order_id = $order->get_id();
$sub_orders = get_children(
array(
'post_parent' => $order_id,
'post_type' => 'shop_order',
'post_status' => array(
'wc-pending',
'wc-completed',
'wc-processing',
'wc-on-hold'
)
)
);
когда я пытаюсь var_dump($sub_order)
, я получаю результат массива 0.
есть ли способ получить дополнительный заказ?
Ответ №1:
Я нашел эту функцию в плагине:
/**
*
* @global object $wpdb
* @param type $parent_order_id
* @return type
*/
function dokan_get_suborder_ids_by ($parent_order_id){
global $wpdb;
$sql = "SELECT ID FROM " . $wpdb->prefix . "posts
WHERE post_type = 'shop_order'
AND post_parent = " . $parent_order_id;
$sub_orders = $wpdb->get_results($sql);
if ( ! $sub_orders ) {
return null;
}
return $sub_orders;
Я думаю, вы можете использовать ее, например, для получения дополнительных заказов:
$order = wc_get_order(1234);
$order_id = $order->get_id();
$sub_orders = dokan_get_suborder_ids_by($order_id);
foreach($sub_orders as $sub_order) {
$child_order = wc_get_order($sub_order);
var_dump($child_order);
}
Надеюсь, вам поможет
Ответ №2:
Попробуйте это:
$parent_order = wc_get_order(1234);
$sub_orders = get_children([
'post_parent' => dokan_get_prop( $parent_order, 'id' ),
'post_type' => 'shop_order',
]);
Обратите внимание, что если родительский заказ содержит товары только от одного поставщика, ваша $sub_orders
переменная будет пустой.