Woocommerce: atribuirea unui "autor" unui produs

27 nov. 2012, 12:41:15
Vizualizări: 18.6K
Voturi: 11

Dezvolt prima mea temă pentru WooCommerce.

Am nevoie să pot atribui "autori" (de fapt "designeri") produselor WooCommerce. Este posibil acest lucru? Mă gândeam să folosesc utilizatorul "autor" integrat în WordPress, dar interfața de editare a unui produs nu afișează caseta "autor", spre deosebire de interfața de editare a unui "post".

0
Toate răspunsurile la întrebare 1
3
17

Pur și simplu folosește 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' );
}

Utilizator atribuit cu rol personalizat

rol utilizator


Autori activați în tipul de postare Produse

produse WooCommerce cu autor activat


O altă opțiune, de care nu sunt sigur dacă este corectă, este să folosești hook-ul woocommerce_register_post_type* și să înregistrezi mai întâi tipul de postare. Aceasta este o copie a funcției originale plus variabilele necesare, cu author adăugat la argumentul supports.

* /wp-content/plugins/woocommerce/woocommerce.php, linia 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'                  => __( 'Produse', 'woocommerce' ),
                    'singular_name'         => __( 'Produs', 'woocommerce' ),
                    'menu_name'             => _x( 'Produse', 'Nume meniu Admin', 'woocommerce' ),
                    'add_new'               => __( 'Adaugă Produs', 'woocommerce' ),
                    'add_new_item'          => __( 'Adaugă Produs Nou', 'woocommerce' ),
                    'edit'                  => __( 'Editează', 'woocommerce' ),
                    'edit_item'             => __( 'Editează Produs', 'woocommerce' ),
                    'new_item'              => __( 'Produs Nou', 'woocommerce' ),
                    'view'                  => __( 'Vezi Produs', 'woocommerce' ),
                    'view_item'             => __( 'Vezi Produs', 'woocommerce' ),
                    'search_items'          => __( 'Caută Produse', 'woocommerce' ),
                    'not_found'             => __( 'Niciun Produs găsit', 'woocommerce' ),
                    'not_found_in_trash'    => __( 'Niciun Produs găsit în coșul de gunoi', 'woocommerce' ),
                    'parent'                => __( 'Produs Părinte', 'woocommerce' )
                ),
            'description'           => __( 'Aici poți adăuga produse noi în magazinul tău.', '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, // Ierarhic consumă prea multă memorie - WP încarcă toate înregistrările!
            '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
        )
    );
}
29 nov. 2012 16:04:34
Comentarii

Cel mai recent cod din WooCommerce include filtre pentru fiecare tip de postare personalizată înregistrată apply_filters( 'woocommerce_register_post_type_product', astfel încât filtrarea este o soluție acceptabilă.

Anagio Anagio
20 ian. 2014 12:05:12

ce înseamnă 999 în metoda add_action()?

Atul Chavan Atul Chavan
29 ian. 2019 16:50:43

@Atul, acesta este nivelul de prioritate pentru execuția acțiunii

brasofilo brasofilo
29 ian. 2019 18:33:05