Woocommerce: atribuirea unui "autor" unui produs
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".
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
Autori activați în tipul de postare Produse
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
)
);
}

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ă.
