Thương mại điện tử: gán một tác giả người dùng trên mạng cho một sản phẩm


11

Tôi đang phát triển chủ đề đầu tiên của mình cho thương mại điện tử.

Tôi cần có khả năng "tác giả" (thực sự là "nhà thiết kế") được chỉ định cho các sản phẩm thương mại điện tử. Điều đó có khả thi không? Tôi đã nghĩ đến việc sử dụng người dùng "tác giả" tích hợp wordpress, nhưng giao diện chỉnh sửa sản phẩm không cung cấp hộp "tác giả", không giống như giao diện chỉnh sửa "bài".

Câu trả lời:


15

Đơn giản chỉ cần sử dụng 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' );
}

Người dùng được gán với vai trò tùy chỉnh

vai trò người dùng


Tác giả được bật trong loại bài đăng Sản phẩm

sản phẩm woo với tác giả kích hoạt


Một tùy chọn khác, mà tôi không chắc về tính chính xác của nó , đó là móc vào woocommerce_register_post_type*đăng ký loại bài đăng trước. Đây là một bản sao của chức năng ban đầu cộng với các bình cần thiết, được authorgắn vào supportsđối số.

* /wp-content/plugins/wooc Commerce / wooc Commerce.php, dòng 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
        )
    );
}

Mã mới nhất từ ​​WooC Commerce bao gồm các bộ lọc cho từng loại bài đăng tùy chỉnh được đăng ký apply_filters( 'woocommerce_register_post_type_product',để lọc là một giải pháp ok.
Anagio

999 có nghĩa là gì trong phương thức add_action ()?
Atul Chavan

@Atul, đó là ưu tiên cho hành động để chạy
brasofilo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.