Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 38 additions & 1 deletion inc/compatibilities/otter_blocks.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
*/
class Optml_otter_blocks extends Optml_compatibility {


/**
* Should we load the integration logic.
*
Expand Down Expand Up @@ -39,5 +38,43 @@ function ( $all_watchers ) {

// Replace the image URL with the optimized one in Otter-generated CSS.
add_filter( 'otter_apply_dynamic_image', [ Optml_Main::instance()->manager->url_replacer, 'build_url' ], 99 );

// Ensure replacer is initialized for Otter REST API routes (where register_hooks isn't called).
add_filter( 'rest_pre_dispatch', [ $this, 'maybe_init_replacer_for_rest' ], 10, 3 );
}

/**
* Initialize replacer for Otter REST API routes.
*
* @param mixed $result Response to replace the requested version with.
* @param \WP_REST_Server $server Server instance.
* @param \WP_REST_Request $request Request used to generate the response.
* @return mixed Unmodified result.
*/
public function maybe_init_replacer_for_rest( $result, \WP_REST_Server $server, \WP_REST_Request $request ) {
$route = $request->get_route();

// Only initialize for Otter styles REST routes.
if ( strpos( $route, '/otter/v1/post_styles' ) === false
&& strpos( $route, '/otter/v1/widget_styles' ) === false
&& strpos( $route, '/otter/v1/block_styles' ) === false
) {
return $result;
}

if ( ! did_action( 'optml_replacer_setup' ) ) {
do_action( 'optml_replacer_setup' );
}

return $result;
}

/**
* Should we early load the compatibility?
*
* @return bool Whether to load the compatibility early.
*/
public function should_load_early() {
return true;
}
}
6 changes: 6 additions & 0 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -1020,6 +1020,12 @@ parameters:
count: 1
path: inc/compatibilities/metaslider.php

-
message: '#^Method Optml_otter_blocks\:\:maybe_init_replacer_for_rest\(\) has parameter \$request with generic class WP_REST_Request but does not specify its types\: T$#'
identifier: missingType.generics
count: 1
path: inc/compatibilities/otter_blocks.php

-
message: '#^Method Optml_otter_blocks\:\:register\(\) has no return type specified\.$#'
identifier: missingType.return
Expand Down
Loading