Always show product variations empty state with message when there are no "used for variations" attributes (#38358)

This commit is contained in:
Matt Sherman 2023-05-19 08:37:22 -04:00 committed by GitHub
parent 2992e22507
commit ab770510c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 30 deletions

View File

@ -0,0 +1,4 @@
Significance: minor
Type: update
Always show the product variations empty state with message when there are no "used for variations" attributes on a product.

View File

@ -186,14 +186,12 @@ class WC_Meta_Box_Product_Data {
global $post, $wpdb, $product_object;
/* phpcs:disable WooCommerce.Commenting.CommentHooks.MissingHookComment */
$global_attributes_count = count( wc_get_attribute_taxonomies() );
$variation_attributes = array_filter( $product_object->get_attributes(), array( __CLASS__, 'filter_variation_attributes' ) );
$non_variation_attributes_count = count( array_filter( $product_object->get_attributes(), array( __CLASS__, 'filter_non_variation_attributes' ) ) );
$default_attributes = $product_object->get_default_attributes();
$variations_count = absint( apply_filters( 'woocommerce_admin_meta_boxes_variations_count', $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'product_variation' AND post_status IN ('publish', 'private')", $post->ID ) ), $post->ID ) );
$variations_per_page = absint( apply_filters( 'woocommerce_admin_meta_boxes_variations_per_page', 15 ) );
$variations_total_pages = ceil( $variations_count / $variations_per_page );
$modal_title = get_bloginfo( 'name' ) . __( ' says', 'woocommerce' );
$variation_attributes = array_filter( $product_object->get_attributes(), array( __CLASS__, 'filter_variation_attributes' ) );
$default_attributes = $product_object->get_default_attributes();
$variations_count = absint( apply_filters( 'woocommerce_admin_meta_boxes_variations_count', $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'product_variation' AND post_status IN ('publish', 'private')", $post->ID ) ), $post->ID ) );
$variations_per_page = absint( apply_filters( 'woocommerce_admin_meta_boxes_variations_per_page', 15 ) );
$variations_total_pages = ceil( $variations_count / $variations_per_page );
$modal_title = get_bloginfo( 'name' ) . __( ' says', 'woocommerce' );
/* phpcs: enable */
include __DIR__ . '/views/html-product-data-variations.php';

View File

@ -16,7 +16,7 @@ $arrow_img_url = WC_ADMIN_IMAGES_FOLDER_URL . '/product_data/no-variati
<div id="variable_product_options" class="panel wc-metaboxes-wrapper hidden">
<div id="variable_product_options_inner">
<?php if ( ! count( $variation_attributes ) && ( ( $global_attributes_count > 0 ) || ( $non_variation_attributes_count > 0 ) ) ) : ?>
<?php if ( ! count( $variation_attributes ) ) : ?>
<div class="add-attributes-container">
<div class="add-attributes-message">
@ -36,27 +36,6 @@ $arrow_img_url = WC_ADMIN_IMAGES_FOLDER_URL . '/product_data/no-variati
</div>
</div>
<?php elseif ( ! count( $variation_attributes ) ) : ?>
<div id="message" class="inline notice woocommerce-message">
<p>
<?php echo esc_html_e( 'Offer customers multiple product options, like size and color. Start by creating a new custom attribute and enter available values (theyll be shown as selectable product options).', 'woocommerce' ); ?> <a target="_blank" href="https://woocommerce.com/document/variable-product/#add-variations"><?php esc_html_e( 'Learn more about creating variations', 'woocommerce' ); ?></a>
</p>
</div>
<div class="wc-metabox">
<div class="woocommerce_variation_new_attribute_data wc-metabox-content">
<?php
$i = 0;
$is_variations_screen = true;
$attribute = new WC_Product_Attribute();
$attribute->set_variation( true );
require __DIR__ . '/html-product-attribute-inner.php';
?>
<div class="toolbar">
<button type="button" aria-disabled="true" class="button button-primary create-variations disabled"><?php esc_html_e( 'Create variations', 'woocommerce' ); ?></button>
</div>
</div>
</div>
<?php else : ?>
<div class="toolbar toolbar-variations-defaults">