checkout_shortcode_tag', array( 'woocommerce_checkout' ), '8.3.0', 'woocommerce_create_pages' ) . ']', 'block' => 'woocommerce/checkout', 'shortcode_callback' => function ( $page ) { if ( $page ) { $shortcode = apply_filters_deprecated( 'woocommerce_checkout_shortcode_tag', array( 'woocommerce_checkout' ), '8.3.0', 'woocommerce_create_pages' ); if ( has_shortcode( $page->post_content, $shortcode ) ) { return $shortcode; } } return ''; }, 'block_callback' => function ( $page ) { if ( $page ) { if ( has_block( 'woocommerce/checkout', $page->post_content ) ) { return 'woocommerce/checkout'; } if ( CartCheckoutUtils::has_block_variation( 'woocommerce/classic-shortcode', 'shortcode', 'checkout', $page->post_content ) ) { return 'woocommerce/classic-shortcode'; } } return ''; }, ), _x( 'My account', 'Page setting', 'woocommerce' ) => array( 'option' => 'woocommerce_myaccount_page_id', 'shortcode' => '[' . apply_filters( 'woocommerce_my_account_shortcode_tag', 'woocommerce_my_account' ) . ']', ), _x( 'Terms and conditions', 'Page setting', 'woocommerce' ) => array( 'option' => 'woocommerce_terms_page_id', ), ); $pages_output = array(); foreach ( $check_pages as $page_name => $values ) { $page_id = get_option( $values['option'] ); $page_set = false; $page_exists = false; $page_visible = false; $shortcode_present = false; $shortcode_required = false; $block_present = false; $block_required = false; $page = false; $block = ''; $shortcode = ''; // Page checks. if ( $page_id ) { $page_set = true; $page = get_post( $page_id ); if ( $page ) { $page_exists = true; if ( 'publish' === $page->post_status ) { $page_visible = true; } } } // Shortcode checks. if ( $page && isset( $values['shortcode_callback'], $values['shortcode'] ) ) { $shortcode_required = true; $result = $values['shortcode_callback']( $page ); $shortcode = $result ? $result : $values['shortcode']; $shortcode_present = (bool) $result; } elseif ( $page && isset( $values['shortcode'] ) ) { $shortcode = $values['shortcode']; $shortcode_required = true; $shortcode_present = has_shortcode( $page->post_content, trim( $shortcode, '[]' ) ); } // Block checks. if ( $page && isset( $values['block_callback'], $values['block'] ) ) { $block_required = true; $result = $values['block_callback']( $page ); $block = $result ? $result : $values['block']; $block_present = (bool) $result; } elseif ( $page && isset( $values['block'] ) ) { $block = $values['block']; $block_required = true; $block_present = has_block( $block, $page->post_content ); } // Wrap up our findings into an output array. $pages_output[] = array( 'page_name' => $page_name, 'page_id' => $page_id, 'page_set' => $page_set, 'page_exists' => $page_exists, 'page_visible' => $page_visible, 'shortcode' => $shortcode, 'block' => $block, 'shortcode_required' => $shortcode_required, 'shortcode_present' => $shortcode_present, 'block_present' => $block_present, 'block_required' => $block_required, ); } return $pages_output; } /** * Get info about the logging system. * * @return array */ protected function get_logging_info() { return array( 'logging_enabled' => LoggingUtil::logging_is_enabled(), 'default_handler' => LoggingUtil::get_default_handler(), 'retention_period_days' => LoggingUtil::get_retention_period(), 'level_threshold' => WC_Log_Levels::get_level_label( strtolower( LoggingUtil::get_level_threshold() ) ), 'log_directory_size' => size_format( LoggingUtil::get_log_directory_size() ), ); } /** * Get any query params needed. * * @return array */ public function get_collection_params() { return array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ); } /** * Prepare the system status response * * @param array $system_status System status data. * @param WP_REST_Request $request Request object. * @return WP_REST_Response */ public function prepare_item_for_response( $system_status, $request ) { $data = $this->add_additional_fields_to_object( $system_status, $request ); $data = $this->filter_response_by_context( $data, 'view' ); $response = rest_ensure_response( $data ); /** * Filter the system status returned from the REST API. * * @param WP_REST_Response $response The response object. * @param mixed $system_status System status * @param WP_REST_Request $request Request object. */ return apply_filters( 'woocommerce_rest_prepare_system_status', $response, $system_status, $request ); } }