Woocommerce: attribuer un «auteur» à un produit

11

Je développe mon premier thème pour le woocommerce.

Je dois pouvoir affecter des "auteurs" (vraiment des "designers") aux produits de woocommerce. Est-ce faisable? Je pensais utiliser l'utilisateur "auteur" intégré de wordpress, mais l'interface d'une édition de produit ne fournit pas la boîte "auteur", contrairement à une interface d'édition "post".

pixeline
la source

Réponses:

15

Utilisez simplement 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' );
}

Utilisateur affecté avec un rôle personnalisé

rôle d'utilisateur


Auteurs activés dans le type de publication Produits

produits woo avec l'auteur activé


Une autre option, dont je ne suis pas sûr de son exactitude , consiste à s'y connecter woocommerce_register_post_type* et à enregistrer d'abord le type de message. Il s'agit d'une copie de la fonction d'origine plus les variables nécessaires, avec en authorannexe à l' supportsargument.

* /wp-content/plugins/woocommerce/woocommerce.php, ligne 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
        )
    );
}
brasofilo
la source
Le dernier code de WooCommerce inclut des filtres pour chaque type de publication personnalisé en cours d'enregistrement apply_filters( 'woocommerce_register_post_type_product',, le filtrage est donc une bonne solution.
Anagio
que signifie 999 dans la méthode add_action ()?
Atul Chavan
@Atul, c'est la priorité de l'action à exécuter
brasofilo