wordpress - site - Crear producto después del registro de usuario
wordpress title hook (1)
¿Es posible crear automáticamente un producto después de que un usuario se registra?
Estoy creando una especie de mercado, así que cuando un usuario se registra como proveedor, quiero que WooCommerce cree automáticamente un producto con estas especificaciones:
Nombre del producto = Reserva - the_author_meta (''display_name'')
Product slug = calendar- the_author_meta (''user_login'')
Por ejemplo. John Doe se registra como proveedor con "nombre de usuario: johndoe ". Cuando se completa el registro, se crea automáticamente un producto.
El nombre del producto es "Booking - John Doe". El producto slug es: "calendario-johndoe".
Entonces, el producto Booking - John Doe se puede encontrar en mysite.com/product/calendar-johndoe
Gracias por tu tiempo
Puede lograr esto enganchándolo a
user_register
porque el núcleo de WordPress maneja el registro del usuario y ejecuta el engancheuser_register
justo después de que se registra un usuario. y para crear un producto puede usarwp_insert_post
methord para insertar la publicación conpost_type = product
Aquí está el código:
add_action( ''user_register'', ''myCustomProduct'', 10, 1 );
function myCustomProduct($user_id)
{
$user_info = get_userdata($user_id);
$display_name = $user_info->display_name;
$user_full_name = get_user_meta($user_id, ''first_name'', TRUE) . '' '' . get_user_meta($user_id, ''last_name'', TRUE);
$my_product_name = ''Booking - '' . trim($user_full_name);
$my_slug = ''calendar-'' . str_replace(array('' ''), '''', strip_tags($display_name));
$post = array(
''post_author'' => $user_id,
''post_content'' => '''',
''post_status'' => "publish",
''post_title'' => wp_strip_all_tags($my_product_name),
''post_name''=> $my_slug,
''post_parent'' => '''',
''post_type'' => "product",
);
//Create Post
$post_id = wp_insert_post($post, $wp_error);
//set Product Category
//wp_set_object_terms( $post_id, ''Your Category Name '', ''product_cat'' );
//set product type
wp_set_object_terms($post_id, ''simple'', ''product_type'');
update_post_meta($post_id, ''_visibility'', ''visible'');
update_post_meta($post_id, ''_stock_status'', ''instock'');
update_post_meta($post_id, ''total_sales'', ''0'');
update_post_meta($post_id, ''_sku'', "");
update_post_meta($post_id, ''_product_attributes'', array());
update_post_meta($post_id, ''_manage_stock'', "no");
update_post_meta($post_id, ''_backorders'', "no");
update_post_meta($post_id, ''_stock'', "");
//update_post_meta($post_id, ''_downloadable'', ''yes'');
//update_post_meta($post_id, ''_virtual'', ''yes'');
//update_post_meta($post_id, ''_regular_price'', "1");
//update_post_meta($post_id, ''_sale_price'', "1");
//update_post_meta($post_id, ''_purchase_note'', "");
//update_post_meta($post_id, ''_featured'', "no");
//update_post_meta($post_id, ''_weight'', "");
//update_post_meta($post_id, ''_length'', "");
//update_post_meta($post_id, ''_width'', "");
//update_post_meta($post_id, ''_height'', "");
//update_post_meta($post_id, ''_sale_price_dates_from'', "");
//update_post_meta($post_id, ''_sale_price_dates_to'', "");
//update_post_meta($post_id, ''_price'', "1");
//update_post_meta($post_id, ''_sold_individually'', "");
}
El código va en el archivo function.php de su tema (o tema) hijo activo. O también en cualquier plugin de archivos php.
El código está probado y completamente funcional.
Tenga en cuenta: he supuesto que su formulario de registro tiene el campo first_name
y last_name
contrario, si usa el formulario de registro predeterminado de WooCommerce, solo tiene el campo de email
y password
, entonces el código anterior generará un nombre de producto como Booking -
.
¡Espero que esto ayude!