| Conditions | 7 |
| Paths | 16 |
| Total Lines | 58 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 110 | function render_single_block_page() { |
||
| 111 | // phpcs:ignore WordPress.Security.NonceVerification |
||
| 112 | $map_block_counter = isset( $_GET, $_GET['map-block-counter'] ) ? absint( $_GET['map-block-counter'] ) : null; |
||
| 113 | // phpcs:ignore WordPress.Security.NonceVerification |
||
| 114 | $map_block_post_id = isset( $_GET, $_GET['map-block-post-id'] ) ? absint( $_GET['map-block-post-id'] ) : null; |
||
| 115 | |||
| 116 | if ( ! $map_block_counter || ! $map_block_post_id ) { |
||
| 117 | return; |
||
| 118 | } |
||
| 119 | |||
| 120 | /* Create an array of all root-level DIVs that are Map Blocks */ |
||
| 121 | $post = get_post( $map_block_post_id ); |
||
| 122 | |||
| 123 | if ( ! class_exists( 'DOMDocument' ) ) { |
||
| 124 | return; |
||
| 125 | } |
||
| 126 | |||
| 127 | $post_html = new \DOMDocument(); |
||
| 128 | /** This filter is already documented in core/wp-includes/post-template.php */ |
||
| 129 | $content = apply_filters( 'the_content', $post->post_content ); |
||
| 130 | |||
| 131 | /* Suppress warnings */ |
||
| 132 | libxml_use_internal_errors( true ); |
||
| 133 | @$post_html->loadHTML( $content ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged |
||
|
|
|||
| 134 | libxml_use_internal_errors( false ); |
||
| 135 | |||
| 136 | $xpath = new \DOMXPath( $post_html ); |
||
| 137 | $container = $xpath->query( '//div[ contains( @class, "wp-block-jetpack-map" ) ]' )->item( $map_block_counter - 1 ); |
||
| 138 | |||
| 139 | /* Check that we have a block matching the counter position */ |
||
| 140 | if ( ! $container ) { |
||
| 141 | return; |
||
| 142 | } |
||
| 143 | |||
| 144 | /* Compile scripts and styles */ |
||
| 145 | ob_start(); |
||
| 146 | |||
| 147 | add_filter( 'jetpack_is_amp_request', '__return_false' ); |
||
| 148 | |||
| 149 | Jetpack_Gutenberg::load_assets_as_required( FEATURE_NAME ); |
||
| 150 | wp_scripts()->do_items(); |
||
| 151 | wp_styles()->do_items(); |
||
| 152 | |||
| 153 | add_filter( 'jetpack_is_amp_request', '__return_true' ); |
||
| 154 | |||
| 155 | $head_content = ob_get_clean(); |
||
| 156 | |||
| 157 | /* Put together a new complete document containing only the requested block markup and the scripts/styles needed to render it */ |
||
| 158 | $block_markup = $post_html->saveHTML( $container ); |
||
| 159 | $access_token = Jetpack_Mapbox_Helper::get_access_token(); |
||
| 160 | $page_html = sprintf( |
||
| 161 | '<!DOCTYPE html><head><style>html, body { margin: 0; padding: 0; }</style>%s</head><body>%s</body>', |
||
| 162 | $head_content, |
||
| 163 | preg_replace( '/(?<=<div\s)/', 'data-api-key="' . esc_attr( $access_token['key'] ) . '" ', $block_markup, 1 ) |
||
| 164 | ); |
||
| 165 | echo $page_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
||
| 166 | exit; |
||
| 167 | } |
||
| 168 | add_action( 'wp', __NAMESPACE__ . '\render_single_block_page' ); |
||
| 169 |
If you suppress an error, we recommend checking for the error condition explicitly: