WC_Post_Types::register_post_types()
Register core post types.
Description Description
Source Source
File: includes/class-wc-post-types.php
public static function register_post_types() { if ( ! is_blog_installed() || post_type_exists( 'product' ) ) { return; } do_action( 'woocommerce_register_post_type' ); $permalinks = wc_get_permalink_structure(); $supports = array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'publicize', 'wpcom-markdown' ); if ( 'yes' === get_option( 'woocommerce_enable_reviews', 'yes' ) ) { $supports[] = 'comments'; } $shop_page_id = wc_get_page_id( 'shop' ); if ( current_theme_supports( 'woocommerce' ) ) { $has_archive = $shop_page_id && get_post( $shop_page_id ) ? urldecode( get_page_uri( $shop_page_id ) ) : 'shop'; } else { $has_archive = false; } // If theme support changes, we may need to flush permalinks since some are changed based on this flag. $theme_support = current_theme_supports( 'woocommerce' ) ? 'yes' : 'no'; if ( get_option( 'current_theme_supports_woocommerce' ) !== $theme_support && update_option( 'current_theme_supports_woocommerce', $theme_support ) ) { update_option( 'woocommerce_queue_flush_rewrite_rules', 'yes' ); } register_post_type( 'product', apply_filters( 'woocommerce_register_post_type_product', array( 'labels' => array( 'name' => __( 'Products', 'woocommerce' ), 'singular_name' => __( 'Product', 'woocommerce' ), 'all_items' => __( 'All Products', 'woocommerce' ), 'menu_name' => _x( 'Products', 'Admin menu name', 'woocommerce' ), 'add_new' => __( 'Add New', 'woocommerce' ), 'add_new_item' => __( 'Add new product', 'woocommerce' ), 'edit' => __( 'Edit', 'woocommerce' ), 'edit_item' => __( 'Edit product', 'woocommerce' ), 'new_item' => __( 'New product', 'woocommerce' ), 'view_item' => __( 'View product', 'woocommerce' ), 'view_items' => __( 'View products', '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' => $permalinks['product_rewrite_slug'] ? array( 'slug' => $permalinks['product_rewrite_slug'], 'with_front' => false, 'feeds' => true, ) : false, 'query_var' => true, 'supports' => $supports, 'has_archive' => $has_archive, 'show_in_nav_menus' => true, 'show_in_rest' => true, ) ) ); register_post_type( 'product_variation', apply_filters( 'woocommerce_register_post_type_product_variation', array( 'label' => __( 'Variations', 'woocommerce' ), 'public' => false, 'hierarchical' => false, 'supports' => false, 'capability_type' => 'product', 'rewrite' => false, ) ) ); wc_register_order_type( 'shop_order', apply_filters( 'woocommerce_register_post_type_shop_order', array( 'labels' => array( 'name' => __( 'Orders', 'woocommerce' ), 'singular_name' => _x( 'Order', 'shop_order post type singular name', 'woocommerce' ), 'add_new' => __( 'Add order', 'woocommerce' ), 'add_new_item' => __( 'Add new order', 'woocommerce' ), 'edit' => __( 'Edit', 'woocommerce' ), 'edit_item' => __( 'Edit order', 'woocommerce' ), 'new_item' => __( 'New order', 'woocommerce' ), 'view_item' => __( 'View order', 'woocommerce' ), 'search_items' => __( 'Search orders', 'woocommerce' ), 'not_found' => __( 'No orders found', 'woocommerce' ), 'not_found_in_trash' => __( 'No orders found in trash', 'woocommerce' ), 'parent' => __( 'Parent orders', 'woocommerce' ), 'menu_name' => _x( 'Orders', 'Admin menu name', 'woocommerce' ), 'filter_items_list' => __( 'Filter orders', 'woocommerce' ), 'items_list_navigation' => __( 'Orders navigation', 'woocommerce' ), 'items_list' => __( 'Orders list', 'woocommerce' ), ), 'description' => __( 'This is where store orders are stored.', 'woocommerce' ), 'public' => false, 'show_ui' => true, 'capability_type' => 'shop_order', 'map_meta_cap' => true, 'publicly_queryable' => false, 'exclude_from_search' => true, 'show_in_menu' => current_user_can( 'manage_woocommerce' ) ? 'woocommerce' : true, 'hierarchical' => false, 'show_in_nav_menus' => false, 'rewrite' => false, 'query_var' => false, 'supports' => array( 'title', 'comments', 'custom-fields' ), 'has_archive' => false, ) ) ); wc_register_order_type( 'shop_order_refund', apply_filters( 'woocommerce_register_post_type_shop_order_refund', array( 'label' => __( 'Refunds', 'woocommerce' ), 'capability_type' => 'shop_order', 'public' => false, 'hierarchical' => false, 'supports' => false, 'exclude_from_orders_screen' => false, 'add_order_meta_boxes' => false, 'exclude_from_order_count' => true, 'exclude_from_order_views' => false, 'exclude_from_order_reports' => false, 'exclude_from_order_sales_reports' => true, 'class_name' => 'WC_Order_Refund', 'rewrite' => false, ) ) ); if ( 'yes' === get_option( 'woocommerce_enable_coupons' ) ) { register_post_type( 'shop_coupon', apply_filters( 'woocommerce_register_post_type_shop_coupon', array( 'labels' => array( 'name' => __( 'Coupons', 'woocommerce' ), 'singular_name' => __( 'Coupon', 'woocommerce' ), 'menu_name' => _x( 'Coupons', 'Admin menu name', 'woocommerce' ), 'add_new' => __( 'Add coupon', 'woocommerce' ), 'add_new_item' => __( 'Add new coupon', 'woocommerce' ), 'edit' => __( 'Edit', 'woocommerce' ), 'edit_item' => __( 'Edit coupon', 'woocommerce' ), 'new_item' => __( 'New coupon', 'woocommerce' ), 'view_item' => __( 'View coupon', 'woocommerce' ), 'search_items' => __( 'Search coupons', 'woocommerce' ), 'not_found' => __( 'No coupons found', 'woocommerce' ), 'not_found_in_trash' => __( 'No coupons found in trash', 'woocommerce' ), 'parent' => __( 'Parent coupon', 'woocommerce' ), 'filter_items_list' => __( 'Filter coupons', 'woocommerce' ), 'items_list_navigation' => __( 'Coupons navigation', 'woocommerce' ), 'items_list' => __( 'Coupons list', 'woocommerce' ), ), 'description' => __( 'This is where you can add new coupons that customers can use in your store.', 'woocommerce' ), 'public' => false, 'show_ui' => true, 'capability_type' => 'shop_coupon', 'map_meta_cap' => true, 'publicly_queryable' => false, 'exclude_from_search' => true, 'show_in_menu' => current_user_can( 'manage_woocommerce' ) ? 'woocommerce' : true, 'hierarchical' => false, 'rewrite' => false, 'query_var' => false, 'supports' => array( 'title' ), 'show_in_nav_menus' => false, 'show_in_admin_bar' => true, ) ) ); } do_action( 'woocommerce_after_register_post_type' ); }