Woocommerce: menetapkan "penulis" ke suatu produk

11

Saya sedang mengembangkan tema pertama saya untuk woocommerce.

Saya harus memiliki "penulis" (benar-benar "desainer") yang ditugaskan untuk produk woocommerce. Apakah itu layak? Saya berpikir untuk menggunakan pengguna "penulis" yang ada di wordpress, tetapi antarmuka pengeditan produk tidak menyediakan kotak "penulis", tidak seperti antarmuka pengeditan "posting".

Pixeline
sumber

Jawaban:

15

Cukup gunakan 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' );
}

Pengguna ditugaskan dengan peran khusus

peran pengguna


Penulis diaktifkan dalam jenis posting Produk

merayu produk dengan penulis diaktifkan


Pilihan lain, yang saya tidak yakin benar , untuk menghubungkan ke woocommerce_register_post_type* dan mendaftarkan jenis posting terlebih dahulu. Ini adalah salinan dari fungsi asli ditambah vars yang diperlukan, dengan authormenambahkan supportsargumen.

* /wp-content/plugins/woocommerce/woocommerce.php, baris 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
sumber
Kode terbaru dari WooCommerce mencakup filter untuk setiap jenis posting kustom yang didaftarkan apply_filters( 'woocommerce_register_post_type_product',sehingga penyaringan adalah solusi yang ok.
Anagio
apa arti 999 dalam metode add_action ()?
Atul Chavan
@Atul, itulah prioritas untuk menjalankan tindakan
brasofilo