web-dev-qa-db-fra.com

Ajout du support de révision au contenu du produit WooCommerce

Je dois ajouter un support de révision aux produits WooCommerce (au moins pour le contenu principal). Les développeurs ne sont pas disposés à le faire jusqu'à ce que Wordpress obtienne une assistance pour les champs de produits supplémentaires: https://github.com/woothemes/woocommerce/issues/2178

Comme je préfère le support de révision partielle que rien, j'ai jeté un coup d'œil autour de moi et trouvé ce qui suit.

Depuis WooCommerce 2.6.4, nous avons ceci sur woocommerce/includes/class-wc-post-types.php:

        register_post_type( 'product',
                apply_filters( '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' ),
                                                'featured_image'        => __( 'Product Image', 'woocommerce' ),
                                                'set_featured_image'    => __( 'Set product image', 'woocommerce' ),
                                                'remove_featured_image' => __( 'Remove product image', 'woocommerce' ),
                                                'use_featured_image'    => __( 'Use as product image', 'woocommerce' ),
                                                'insert_into_item'      => __( 'Insert into product', 'woocommerce' ),
                                                'uploaded_to_this_item' => __( 'Uploaded to this product', 'woocommerce' ),
                                                'filter_items_list'     => __( 'Filter products', 'woocommerce' ),
                                                'items_list_navigation' => __( 'Products navigation', 'woocommerce' ),
                                                'items_list'            => __( 'Products list', 'woocommerce' ),
                                        ),
                                'description'         => __( 'This is where you can add new products to your store.', 'woocommerce' ),
                                'public'              => true,
                                'show_ui'             => true,
                                'capability_type'     => 'product',
                                'map_meta_cap'        => true,
                                'publicly_queryable'  => true,
                                'exclude_from_search' => false,
                                'hierarchical'        => false, // Hierarchical causes memory issues - WP loads all records!
                                'rewrite'             => $product_permalink ? array( 'slug' => untrailingslashit( $product_permalink ), 'with_front' => false, 'feeds' => true ) : false,
                                'query_var'           => true,
                                'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments', 'custom-fields', 'page-attributes', 'publicize', 'wpcom-markdown' ),
                                'has_archive'         => ( $shop_page_id = wc_get_page_id( 'shop' ) ) && get_post( $shop_page_id ) ? get_page_uri( $shop_page_id ) : 'shop',
                                'show_in_nav_menus'   => true
                        )
                )
        );

Je peux le faire en ajoutant un tableau 'revisions' à 'supports'.

Mais chaque mise à niveau annulera ce changement.

Maintenant, la question est: comment faire ce changement en tant que thème/plugin enfant/quoi que ce soit qui puisse continuer à fonctionner même après les mises à niveau de WooCommerce?

3
douglaz

Comme vous l'avez déjà signalé, il existe un filtre.

add_filter( 'woocommerce_register_post_type_product', 'wpse_modify_product_post_type' );

function wpse_modify_product_post_type( $args ) {
     $args['supports'][] = 'revisions';

     return $args;
}

Mettez cela dans le fichier functions.php de votre thème enfant.

12
Roy Ho

Active la boîte à méta de révision dans l'écran d'édition de page.

function wpcodex_add_excerpt_support_for_pages() {
    add_post_type_support( 'product', 'revisions' );
}
add_action( 'init', 'wpcodex_add_excerpt_support_for_pages' );

cela peut aider

1
Rohit Savaj