tag site post_title page get_the_title blog wordpress woocommerce

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 enganche user_register justo después de que se registra un usuario. y para crear un producto puede usar wp_insert_post methord para insertar la publicación con post_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!