Woocommerce: assign an “author” to a product

I’m developing my first theme for woocommerce.

I need to be able to have “authors” (really “designers”) assigned to woocommerce products. Is that feasible? I was thinking of using the wordpress built-in “author” user, but the interface of a product editing does not provide the “author” box, unlike a “post” editing interface.

Related posts

Leave a Reply

1 comment

  1. Simply use add_post_type_support:

    add_action('init', 'wpse_74054_add_author_woocommerce', 999 );
    
    function wpse_74054_add_author_woocommerce() {
        add_post_type_support( 'product', 'author' );
    }
    

    User assigned with custom role

    user role


    Authors enabled in Products post type

    woo products with author enabled


    Another option, which I’m not sure of its correctness, it to hook into woocommerce_register_post_type* and register the post type first. This is a copy of the original function plus the vars needed, with author appended to the supports argument.

    * /wp-content/plugins/woocommerce/woocommerce.php, line 885

    add_action( 'woocommerce_register_post_type', 'wpse_74054_override_register_product_type' );
    function wpse_74054_override_register_product_type()
    {
        $shop_page_id = woocommerce_get_page_id('shop');
        $base_slug = ( $shop_page_id > 0 && get_page( $shop_page_id ) ) ? get_page_uri( $shop_page_id ) : 'shop';
        $product_base = ( get_option('woocommerce_prepend_shop_page_to_products') == 'yes' ) ? trailingslashit($base_slug) : trailingslashit(_x('product', 'slug', 'woocommerce'));
    
        register_post_type( "product",
            array(
                'labels' => array(
                        'name'                  => __( 'Products', 'woocommerce' ),
                        'singular_name'         => __( 'Product', 'woocommerce' ),
                        'menu_name'             => _x( 'Products', 'Admin menu name', 'woocommerce' ),
                        'add_new'               => __( 'Add Product', 'woocommerce' ),
                        'add_new_item'          => __( 'Add New Product', 'woocommerce' ),
                        'edit'                  => __( 'Edit', 'woocommerce' ),
                        'edit_item'             => __( 'Edit Product', 'woocommerce' ),
                        'new_item'              => __( 'New Product', 'woocommerce' ),
                        'view'                  => __( 'View Product', 'woocommerce' ),
                        'view_item'             => __( 'View Product', 'woocommerce' ),
                        'search_items'          => __( 'Search Products', 'woocommerce' ),
                        'not_found'             => __( 'No Products found', 'woocommerce' ),
                        'not_found_in_trash'    => __( 'No Products found in trash', 'woocommerce' ),
                        'parent'                => __( 'Parent Product', 'woocommerce' )
                    ),
                'description'           => __( 'This is where you can add new products to your store.', 'woocommerce' ),
                'public'                => true,
                'show_ui'               => true,
                'capability_type'       => 'post',
                'capabilities' => array(
                    'publish_posts'         => 'manage_woocommerce_products',
                    'edit_posts'            => 'manage_woocommerce_products',
                    'edit_others_posts'     => 'manage_woocommerce_products',
                    'delete_posts'          => 'manage_woocommerce_products',
                    'delete_others_posts'   => 'manage_woocommerce_products',
                    'read_private_posts'    => 'manage_woocommerce_products',
                    'edit_post'             => 'manage_woocommerce_products',
                    'delete_post'           => 'manage_woocommerce_products',
                    'read_post'             => 'manage_woocommerce_products'
                ),
                'publicly_queryable'    => true,
                'exclude_from_search'   => false,
                'hierarchical'          => false, // Hierarcal causes memory issues - WP loads all records!
                'rewrite'               => array( 'slug' => $product_base, 'with_front' => false, 'feeds' => $base_slug ),
                'query_var'             => true,
                'supports'              => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'custom-fields', 'page-attributes', 'author' ),
                'has_archive'           => $base_slug,
                'show_in_nav_menus'     => true
            )
        );
    }