diff --git a/autoload.php b/autoload.php
index dc6f098..4b9cb4a 100644
--- a/autoload.php
+++ b/autoload.php
@@ -16,7 +16,7 @@
function ( $class ) {
$namspaces = [
'Eighteen73\\Orbit\\' => __DIR__ . '/includes/classes/',
- 'Eighteen73\\Orbit\\Dependencies\\' => __DIR__ . '/includes/dependencies/',
+ 'Eighteen73\\Orbit\\Dependencies\\' => __DIR__ . '/includes/lib/',
];
foreach ( $namspaces as $prefix => $base_dir ) {
$len = strlen( $prefix );
diff --git a/composer.json b/composer.json
index 0cf1cf3..638b1b4 100644
--- a/composer.json
+++ b/composer.json
@@ -25,8 +25,8 @@
"extra": {
"mozart": {
"dep_namespace": "Eighteen73\\Orbit\\Dependencies\\",
- "dep_directory": "/includes/Dependencies/",
- "classmap_directory": "/includes/classes/dependencies/",
+ "dep_directory": "/includes/lib/",
+ "classmap_directory": "/includes/classes/lib/",
"classmap_prefix": "Eighteen73_Orbit_",
"packages": [
"pelago/emogrifier"
diff --git a/includes/classes/BlockEditor/Patterns.php b/includes/classes/BlockEditor/Patterns.php
new file mode 100644
index 0000000..7b2bf76
--- /dev/null
+++ b/includes/classes/BlockEditor/Patterns.php
@@ -0,0 +1,123 @@
+get_all_registered();
+
+ if ( ! empty( $patterns ) ) {
+ foreach ( $patterns as $pattern ) {
+ if ( $this->is_woocommerce_pattern( $pattern ) ) {
+ unregister_block_pattern( $pattern['name'] );
+ }
+ }
+ }
+ }
+
+ /**
+ * Filter WooCommerce patterns from REST API responses.
+ *
+ * @param mixed $dispatch_result Dispatch result, will be used if not empty.
+ * @param \WP_REST_Request $request Request used to generate the response.
+ * @param string $route Route matched for the request.
+ * @param array $handler Route handler used for the request.
+ * @return mixed
+ */
+ public function filter_woocommerce_patterns_rest( $dispatch_result, $request, $route, $handler ) {
+ // Check if this is a block patterns request
+ if ( strpos( $route, '/wp/v2/block-patterns/patterns' ) !== 0 ) {
+ return $dispatch_result;
+ }
+
+ // If we already have a result, filter it
+ if ( ! empty( $dispatch_result ) && is_array( $dispatch_result ) ) {
+ return $this->filter_patterns_from_response( $dispatch_result );
+ }
+
+ return $dispatch_result;
+ }
+
+ /**
+ * Check if a pattern is a WooCommerce pattern.
+ *
+ * @param array $pattern The pattern data.
+ * @return bool
+ */
+ private function is_woocommerce_pattern( array $pattern ): bool {
+ // Check by category
+ if ( ! empty( $pattern['categories'] ) && in_array( 'woo-commerce', $pattern['categories'], true ) ) {
+ return true;
+ }
+
+ // Check by pattern name/slug
+ $woo_prefixes = [
+ 'woocommerce-blocks/',
+ 'woocommerce/',
+ 'woo/',
+ 'wc-',
+ ];
+
+ foreach ( $woo_prefixes as $prefix ) {
+ if ( strpos( $pattern['name'], $prefix ) === 0 ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Filter WooCommerce patterns from a REST response.
+ *
+ * @param array $response The response data.
+ * @return array
+ */
+ private function filter_patterns_from_response( array $response ): array {
+ if ( isset( $response['data'] ) && is_array( $response['data'] ) ) {
+ $response['data'] = array_filter(
+ $response['data'],
+ function ( $pattern ) {
+ return ! $this->is_woocommerce_pattern( $pattern );
+ }
+ );
+
+ // Re-index the array to maintain proper JSON structure
+ $response['data'] = array_values( $response['data'] );
+ }
+
+ return $response;
+ }
+}
diff --git a/includes/classes/BrandedEmails.php b/includes/classes/Branding/BrandedEmails.php
similarity index 98%
rename from includes/classes/BrandedEmails.php
rename to includes/classes/Branding/BrandedEmails.php
index d269745..48025f0 100644
--- a/includes/classes/BrandedEmails.php
+++ b/includes/classes/Branding/BrandedEmails.php
@@ -5,9 +5,12 @@
* @package Orbit
*/
-namespace Eighteen73\Orbit;
+namespace Eighteen73\Orbit\Branding;
use Exception;
+use Eighteen73\Orbit\Singleton;
+use Eighteen73\Orbit\Environment;
+use Eighteen73\Orbit\Utilities\Templates;
use Eighteen73\Orbit\Dependencies\Pelago\Emogrifier\CssInliner;
/**
@@ -262,7 +265,7 @@ public static function orbit_branded_emails_resolve_color( $color_value, $fallba
}
}
- if ( $value ) {
+ if ( is_string( $value ) && $value !== '' ) {
return self::orbit_branded_emails_resolve_color( $value, $fallback );
}
}
diff --git a/includes/classes/RemoteFiles.php b/includes/classes/Media/RemoteFiles.php
similarity index 98%
rename from includes/classes/RemoteFiles.php
rename to includes/classes/Media/RemoteFiles.php
index 3f9f0b6..93e32ff 100644
--- a/includes/classes/RemoteFiles.php
+++ b/includes/classes/Media/RemoteFiles.php
@@ -5,8 +5,10 @@
* @package Orbit
*/
-namespace Eighteen73\Orbit;
+namespace Eighteen73\Orbit\Media;
+use Eighteen73\Orbit\Environment;
+use Eighteen73\Orbit\Singleton;
use Roots\WPConfig\Config;
use Roots\WPConfig\Exceptions\UndefinedConfigKeyException;
diff --git a/includes/classes/HealthCheck.php b/includes/classes/Monitoring/HealthCheck.php
similarity index 93%
rename from includes/classes/HealthCheck.php
rename to includes/classes/Monitoring/HealthCheck.php
index d71c31b..ddb16ca 100644
--- a/includes/classes/HealthCheck.php
+++ b/includes/classes/Monitoring/HealthCheck.php
@@ -5,8 +5,9 @@
* @package Orbit
*/
-namespace Eighteen73\Orbit;
+namespace Eighteen73\Orbit\Monitoring;
+use Eighteen73\Orbit\Singleton;
use WP_REST_Request;
/**
diff --git a/includes/classes/OtherFilters.php b/includes/classes/OtherFilters.php
deleted file mode 100644
index 7f87ee0..0000000
--- a/includes/classes/OtherFilters.php
+++ /dev/null
@@ -1,26 +0,0 @@
-setup();
Performance\Fast404::instance()->setup();
-
+ThirdParty\WooCommerce::instance()->setup();
add_action(
'init',
@@ -45,9 +45,9 @@ function () {
Security\HideAuthor::instance()->setup();
Security\HideVersion::instance()->setup();
Security\RemoveHeadLinks::instance()->setup();
- BrandedEmails::instance()->setup();
- OtherFilters::instance()->setup();
- HealthCheck::instance()->setup();
- RemoteFiles::instance()->setup();
+ Branding\BrandedEmails::instance()->setup();
+ Monitoring\HealthCheck::instance()->setup();
+ Media\RemoteFiles::instance()->setup();
+ BlockEditor\Patterns::instance()->setup();
}
);
diff --git a/phpcs.xml b/phpcs.xml
index 2211dc9..b48c21f 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -5,7 +5,7 @@
.
lib/packages/*
- includes/Dependencies/*
+ includes/lib/*
diff --git a/templates/branded-emails/email-styles.php b/templates/branded-emails/email-styles.php
index bb21635..53eb947 100644
--- a/templates/branded-emails/email-styles.php
+++ b/templates/branded-emails/email-styles.php
@@ -9,6 +9,8 @@
namespace Eighteen73\Orbit;
+use Eighteen73\Orbit\Branding\BrandedEmails;
+
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
diff --git a/templates/branded-emails/email-template.php b/templates/branded-emails/email-template.php
index 84bfde4..bab4ef4 100644
--- a/templates/branded-emails/email-template.php
+++ b/templates/branded-emails/email-template.php
@@ -9,6 +9,8 @@
namespace Eighteen73\Orbit;
+use Eighteen73\Orbit\Utilities\Templates;
+
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}