Commit 62bd29757cd for woocommerce

commit 62bd29757cd4cf15e5af6f54496f0ce6dafa2932
Author: Poli Gilad <83961704+poligilad-auto@users.noreply.github.com>
Date:   Thu Jul 2 10:11:11 2026 +0200

    Update WooCommerce catalog visibility publish panel layout (#66080)

    * Update product publish panel layout

    * Add changelog for publish panel layout

    * Fix publish panel priority test cleanup

    * Address publish panel review feedback

diff --git a/plugins/woocommerce/changelog/update-product-publish-panel-catalog-visibility b/plugins/woocommerce/changelog/update-product-publish-panel-catalog-visibility
new file mode 100644
index 00000000000..f8e14207897
--- /dev/null
+++ b/plugins/woocommerce/changelog/update-product-publish-panel-catalog-visibility
@@ -0,0 +1,4 @@
+Significance: patch
+Type: update
+
+Update product publish panel catalog visibility layout and extension row ordering.
diff --git a/plugins/woocommerce/client/legacy/css/admin.scss b/plugins/woocommerce/client/legacy/css/admin.scss
index ae8f08fe302..98f6eb67164 100644
--- a/plugins/woocommerce/client/legacy/css/admin.scss
+++ b/plugins/woocommerce/client/legacy/css/admin.scss
@@ -8738,6 +8738,121 @@ table.bar_chart {
 		}
 	}

+	// Align the product description editor with the meta boxes below it.
+	// #normal-sortables adds 4px of padding around postboxes, which #post-body-content
+	// doesn't, so the description editor ends up 8px wider than neighbouring postboxes
+	// on WP 7.0 (where the radius makes the misalignment visible).
+	&.post-type-product #postdivrich.woocommerce-product-description {
+		margin-left: 4px;
+		margin-right: 4px;
+	}
+
+	&.post-type-product #submitdiv {
+		--wc-product-publish-spacing-1: var(--wp-admin-grid-unit-05, 4px);
+		--wc-product-publish-spacing-2: var(--wp-admin-grid-unit-10, 8px);
+		--wc-product-publish-icon-size: 20px;
+		--wc-product-publish-row-horizontal-padding: 10px;
+		--wc-product-publish-summary-row-offset: calc(
+			var(--wc-product-publish-icon-size) +
+				6px
+		);
+		--wc-product-publish-panel-offset: calc(
+			var(--wc-product-publish-icon-size) +
+				5px
+		);
+
+		.misc-pub-catalog-visibility {
+			padding-left: calc(
+				var(--wc-product-publish-row-horizontal-padding) +
+					var(--wc-product-publish-summary-row-offset)
+			);
+			position: relative;
+		}
+
+		.misc-pub-catalog-visibility::before {
+			color: currentColor;
+			content: "\f180";
+			content: "\f180" / "";
+			display: inline-block;
+			font: normal 20px/1 dashicons;
+			left: calc(var(--wc-product-publish-row-horizontal-padding) - 1px);
+			position: absolute;
+			speak: never;
+			top: calc(var(--wc-product-publish-spacing-2) - 2px);
+			vertical-align: top;
+			width: var(--wc-product-publish-icon-size);
+		}
+
+		#catalog-visibility-select {
+			margin-left: calc(-1 * var(--wc-product-publish-panel-offset));
+			width: calc(100% + var(--wc-product-publish-panel-offset));
+		}
+
+		#catalog-visibility-select > p:first-of-type {
+			color: $wp-admin-icon-gray;
+			margin: var(--wc-product-publish-spacing-1) 0
+				var(--wc-product-publish-spacing-2);
+		}
+
+		#catalog-visibility-select input[type="radio"],
+		#catalog-visibility-select input[type="checkbox"] {
+			margin: 0 var(--wc-product-publish-spacing-1)
+				var(--wc-product-publish-spacing-1) 0;
+			vertical-align: text-top;
+		}
+
+		#catalog-visibility-select #_featured,
+		#catalog-visibility-select label[for="_featured"] {
+			position: relative;
+			top: calc(
+				var(--wc-product-publish-spacing-2) -
+					5px
+			);
+		}
+
+		#catalog-visibility-select label.selectit,
+		#catalog-visibility-select label[for="_featured"] {
+			display: inline-block;
+			line-height: 1.5;
+			max-width: calc(100% - 28px);
+		}
+
+		#catalog-visibility-select > p:last-child {
+			align-items: center;
+			display: flex;
+			gap: var(--wc-product-publish-spacing-2);
+			margin: var(--wc-product-publish-spacing-2) 0 0;
+		}
+
+		@media screen and (max-width: 782px) {
+			.misc-pub-catalog-visibility::before {
+				top: calc(var(--wc-product-publish-spacing-2) + 3px);
+			}
+
+			#catalog-visibility-select input[type="radio"],
+			#catalog-visibility-select input[type="checkbox"] {
+				margin: calc(-1 * var(--wc-product-publish-spacing-1))
+					var(--wc-product-publish-spacing-1) 0 0;
+				vertical-align: middle;
+			}
+
+			#catalog-visibility-select label.selectit,
+			#catalog-visibility-select label[for="_featured"] {
+				display: inline;
+				line-height: 280%;
+			}
+
+			#catalog-visibility-select > p:last-child {
+				display: block;
+			}
+
+			#catalog-visibility-select #_featured,
+			#catalog-visibility-select label[for="_featured"] {
+				top: 0;
+			}
+		}
+	}
+
 	// Shipping zone name input: ID selector in the base rule outranks the form-table override above.
 	.wc-shipping-zone-settings #zone_name {
 		padding: 0 12px;
diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php b/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php
index e669b308314..31d8ba95c94 100644
--- a/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php
+++ b/plugins/woocommerce/includes/admin/class-wc-admin-post-types.php
@@ -61,7 +61,7 @@ class WC_Admin_Post_Types {
 		add_filter( 'enter_title_here', array( $this, 'enter_title_here' ), 1, 2 );
 		add_action( 'edit_form_after_title', array( $this, 'edit_form_after_title' ) );
 		add_filter( 'default_hidden_meta_boxes', array( $this, 'hidden_meta_boxes' ), 10, 2 );
-		add_action( 'post_submitbox_misc_actions', array( $this, 'product_data_visibility' ) );
+		add_action( 'post_submitbox_misc_actions', array( $this, 'product_data_visibility' ), 5 );

 		include_once __DIR__ . '/class-wc-admin-upload-downloadable-product.php';

@@ -754,7 +754,7 @@ class WC_Admin_Post_Types {
 		$current_featured   = wc_bool_to_string( $product_object->get_featured() );
 		$visibility_options = wc_get_product_visibility_options();
 		?>
-		<div class="misc-pub-section" id="catalog-visibility">
+		<div class="misc-pub-section misc-pub-catalog-visibility" id="catalog-visibility">
 			<?php esc_html_e( 'Catalog visibility:', 'woocommerce' ); ?>
 			<strong id="catalog-visibility-display">
 				<?php
@@ -781,7 +781,7 @@ class WC_Admin_Post_Types {
 					echo '<input type="radio" name="_visibility" id="_visibility_' . esc_attr( $name ) . '" value="' . esc_attr( $name ) . '" ' . checked( $current_visibility, $name, false ) . ' data-label="' . esc_attr( $label ) . '" /> <label for="_visibility_' . esc_attr( $name ) . '" class="selectit">' . esc_html( $label ) . '</label><br />';
 				}

-				echo '<br /><input type="checkbox" name="_featured" id="_featured" ' . checked( $current_featured, 'yes', false ) . ' /> <label for="_featured">' . esc_html__( 'This is a featured product', 'woocommerce' ) . '</label><br />';
+				echo '<input type="checkbox" name="_featured" id="_featured" ' . checked( $current_featured, 'yes', false ) . ' /> <label for="_featured">' . esc_html__( 'This is a featured product', 'woocommerce' ) . '</label><br />';
 				?>
 				<p>
 					<a href="#catalog-visibility" class="save-post-visibility hide-if-no-js button"><?php esc_html_e( 'OK', 'woocommerce' ); ?></a>