pierre-alexis
Básicamente, estoy tratando de agregar un nuevo producto que se puede reservar en Woocommerce usando un formulario personalizado que he creado, por lo que tengo que agregar los productos mediante programación. Crear el producto está bien, el problema es que no puedo encontrar la manera de agregar un nuevo tipo de persona a mi producto para poder fijar varios precios.
¿Alguien tiene una idea de cómo hacer esto?
Este es el código que tengo hasta ahora.
$post_id = wp_insert_post( array(
'post_title' => $_POST["title"],
'post_content' => $_POST["description"],
'post_status' => 'publish',
'post_type' => "product",
) );
wp_set_object_terms( $post_id, 'booking', 'product_type' );
LoicTheAztec
Lo siguiente habilitará “tiene personas” y creará sus tipos de persona para un producto reservable:
// Create the product
$product_id = wp_insert_post( array(
'post_title' => $_POST["title"],
'post_content' => $_POST["description"],
'post_status' => 'publish',
'post_type' => "product",
) );
// Set the product type
wp_set_object_terms( $product_id, 'booking', 'product_type' );
// Get an instance of the WC_Product Object
$product = wc_get_product($product_id);
// Enable persons and save
$product->set_has_persons(true);
$product->save();
// Here define your person types (one array by person type)
$persons_type_data = array(
// First person type
array(
'block_cost' => 0,
'cost' => 16.50,
'description' => '',
'max' => '',
'min' => '',
'name' => __('Adults'),
),
// Second person type
array(
'block_cost' => 0,
'cost' => 9.20,
'description' => '',
'max' => '',
'min' => '',
'name' => __('Childs'),
),
);
// Loop Through persons type data
foreach( $persons_type_data as $key => $values ){
$person_type = new WC_Product_Booking_Person_Type();
$person_type->set_block_cost($values['block_cost']);
$person_type->set_cost($values['cost']);
$person_type->set_description($values['description']);
$person_type->set_max($values['max']);
$person_type->set_min($values['min']);
$person_type->set_name($values['name']);
$person_type->set_parent_id($product_id);
$person_type->set_sort_order($key); // Sorting is based on the array order
// Save the person type
$person_type->save();
// Add the person type to the array
$persons[] = $person_type;
}
// Set person types and save the product
$product->set_person_types($persons);
$product->save();
Probado y funciona.
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
¿Qué quiere decir exactamente con tipo de persona? No entendí su pregunta correctamente. ¿Puede explicar más?
– Kashalo
5 oct 2018 a las 20:08
@kashalo En las reservas de woocommerce, puede establecer diferentes tipos de personas para cada producto de reserva…
– LoicTheAztec
5 oct 2018 a las 20:35
@LoicTheAztec gracias por la explicación, instalaré el complemento de reserva y miraré alrededor
– Kashalo
5 oct 2018 a las 20:37