web-dev-qa-db-ja.com

WooCommerce商品コンテンツへの改訂サポートの追加

WooCommerce Productsにリビジョンサポートを追加する必要があります(少なくともメインコンテンツに関しては)。 Wordpressで追加の製品フィールドがサポートされるまで、開発者はこれを実行することを嫌がっています。 https://github.com/woothemes/woocommerce/issues/2178

私は何もしないより部分的なリビジョンサポートを好むので、私は周りを見て、そして以下を見つけました。

WooCommerce 2.6.4以降、これは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
                        )
                )
        );

'revisions''supports'配列に追加することでうまくいくようにできます。

しかし、すべてのアップグレードはこの変更を元に戻します。

今の問題は、この変更を子テーマ/プラグイン/ WooCommerceのアップグレード後も機能し続けるためにはどのように変更するのですか?

3
douglaz

あなたがすでに指摘したように、フィルタがあります。

add_filter( 'woocommerce_register_post_type_product', 'wpse_modify_product_post_type' );

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

     return $args;
}

それをあなたの子供のテーマのfunctions.phpファイルに入れてください。

12
Roy Ho

ページ編集画面でリビジョンメタボックスを有効にします。

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

これは役に立つかもしれません

1
Rohit Savaj