用户注册后创建产品

时间:2016-12-19 10:50:51

标签: wordpress woocommerce

用户注册后是否可以自动创建产品?

我创建了一种市场,所以当用户注册为供应商时,我希望Woocommerce能够自动创建具有这些规格的产品:

产品名称=预订 - the_author_meta ('display_name')
产品slug =日历 - the_author_meta ('user_login')

例如。 John Doe使用"用户名: johndoe "注册为供应商。注册完成后,将自动创建产品。

产品名称为"预订 - John Doe"。产品slu is是:" calendar-johndoe"。

所以产品预订 - John Doe可以在mysite.com/product/calendar-johndoe找到

感谢您的时间

1 个答案:

答案 0 :(得分:2)

  

您可以通过将其挂钩到user_register来实现此目的   WordPress核心处理用户注册并运行   用户注册后立即挂钩user_register。并   创建一个产品,您可以使用wp_insert_post methord来插入帖子   与post_type = product

以下是代码:

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', "");
}

代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。
代码经过测试且功能齐全。

请注意:我认为您的注册表单包含first_namelast_name字段,否则如果您使用的是默认的WooCommerce注册表单,那么它只有email和{{ 1}}字段,那么上面的代码将生成一个产品名称password

希望这有帮助!