( 'Varnish cache will be purged each time WP Rocket clears its cache to ensure content is always up-to-date.
%1$sLearn more%2$s', 'rocket' ), '', '' ),
'section' => 'one_click',
'page' => 'addons',
'settings_page' => 'varnish',
'default' => 0,
'sanitize_callback' => 'sanitize_checkbox',
],
]
)
);
}
$webp_beacon = $this->beacon->get_suggest( 'webp' );
if ( rocket_valid_key() && ! \Imagify_Partner::has_imagify_api_key() ) {
$imagify_link = '';
} else {
$imagify_link = '';
}
$this->settings->add_settings_fields(
[
'cache_webp' =>
/**
* Add more content to the 'cache_webp' setting field.
*
* @since 3.10 moved to add-on section
* @since 3.4
*
* @param array $cache_webp_field Data to be added to the setting field.
*/
apply_filters(
'rocket_cache_webp_setting_field',
[
'type' => 'one_click_addon',
'label' => __( 'WebP Compatibility', 'rocket' ),
'logo' => [
'url' => WP_ROCKET_ASSETS_IMG_URL . 'logo-webp.svg',
'width' => 152,
'height' => 135,
],
'title' => __( 'Improve browser compatibility for WebP images.', 'rocket' ),
// translators: %1$s = opening tag, %2$s = closing tag.
'description' => sprintf(
// translators: %1$s and %3$s = opening tag, %2$s = closing tag.
__( 'Enable this option if you would like WP Rocket to serve WebP images to compatible browsers. Please note that WP Rocket cannot create WebP images for you. To create WebP images we recommend %1$sImagify%2$s. %3$sMore info%2$s', 'rocket' ),
$imagify_link,
'',
''
),
'section' => 'one_click',
'page' => 'addons',
'settings_page' => 'webp',
'default' => 0,
'sanitize_callback' => 'sanitize_checkbox',
'container_class' => [
'wpr-webp-addon',
],
]
),
]
);
if ( defined( 'WP_ROCKET_SUCURI_API_KEY_HIDDEN' ) && WP_ROCKET_SUCURI_API_KEY_HIDDEN ) {
// No need to display the dedicated tab if there is nothing to display on it.
$description = __( 'Clear the Sucuri cache when WP Rocket’s cache is cleared.', 'rocket' );
$settings_page = false;
} else {
$description = __( 'Provide your API key to clear the Sucuri cache when WP Rocket’s cache is cleared.', 'rocket' );
$settings_page = 'sucuri';
}
$this->settings->add_settings_fields(
[
'sucury_waf_cache_sync' => [
'type' => 'rocket_addon',
'label' => __( 'Sucuri', 'rocket' ),
'logo' => [
'url' => WP_ROCKET_ASSETS_IMG_URL . 'logo-sucuri.png',
'width' => 152,
'height' => 56,
],
'title' => __( 'Synchronize Sucuri cache with this add-on.', 'rocket' ),
'description' => $description,
'section' => 'addons',
'page' => 'addons',
'settings_page' => $settings_page,
'default' => 0,
'sanitize_callback' => 'sanitize_checkbox',
],
]
);
}
/**
* Registers Cloudflare section.
*
* @since 3.0
*/
private function cloudflare_section() {
$this->settings->add_page_section(
'cloudflare',
[
'title' => __( 'Cloudflare', 'rocket' ),
'menu_description' => '',
'class' => [
'wpr-subMenuItem',
'wpr-addonSubMenuItem',
],
]
);
$beacon_cf_credentials = $this->beacon->get_suggest( 'cloudflare_credentials' );
$beacon_cf_settings = $this->beacon->get_suggest( 'cloudflare_settings' );
$beacon_cf_credentials_api = $this->beacon->get_suggest( 'cloudflare_credentials_api' );
$this->settings->add_settings_sections(
[
'cloudflare_credentials' => [
'type' => 'fields_container',
'title' => __( 'Cloudflare credentials', 'rocket' ),
'help' => [
'id' => $beacon_cf_credentials['id'],
'url' => $beacon_cf_credentials['url'],
],
'page' => 'cloudflare',
],
'cloudflare_settings' => [
'type' => 'fields_container',
'title' => __( 'Cloudflare settings', 'rocket' ),
'help' => [
'id' => $beacon_cf_settings['id'],
'url' => $beacon_cf_settings['url'],
],
'page' => 'cloudflare',
],
]
);
if ( ! defined( 'WP_ROCKET_CF_API_KEY_HIDDEN' ) || ! WP_ROCKET_CF_API_KEY_HIDDEN ) {
$this->settings->add_settings_fields(
[
'cloudflare_api_key' => [
'label' => _x( 'Global API key:', 'Cloudflare', 'rocket' ),
'description' => sprintf( '%2$s', esc_url( $beacon_cf_credentials_api['url'] ), _x( 'Find your API key', 'Cloudflare', 'rocket' ) ),
'default' => '',
'section' => 'cloudflare_credentials',
'page' => 'cloudflare',
],
]
);
}
$this->settings->add_settings_fields(
[
'cloudflare_email' => [
'label' => _x( 'Account email', 'Cloudflare', 'rocket' ),
'default' => '',
'container_class' => [
'wpr-field--split',
],
'section' => 'cloudflare_credentials',
'page' => 'cloudflare',
],
'cloudflare_zone_id' => [
'label' => _x( 'Zone ID', 'Cloudflare', 'rocket' ),
'default' => '',
'container_class' => [
'wpr-field--split',
],
'section' => 'cloudflare_credentials',
'page' => 'cloudflare',
],
'cloudflare_devmode' => [
'type' => 'sliding_checkbox',
'label' => __( 'Development mode', 'rocket' ),
// translators: %1$s = link opening tag, %2$s = link closing tag.
'description' => sprintf( __( 'Temporarily activate development mode on your website. This setting will automatically turn off after 3 hours. %1$sLearn more%2$s', 'rocket' ), '', '' ),
'default' => 0,
'section' => 'cloudflare_settings',
'page' => 'cloudflare',
'sanitize_callback' => 'sanitize_checkbox',
],
'cloudflare_auto_settings' => [
'type' => 'sliding_checkbox',
'label' => __( 'Optimal settings', 'rocket' ),
'description' => __( 'Automatically enhances your Cloudflare configuration for speed, performance grade and compatibility.', 'rocket' ),
'default' => 0,
'section' => 'cloudflare_settings',
'page' => 'cloudflare',
'sanitize_callback' => 'sanitize_checkbox',
],
'cloudflare_protocol_rewrite' => [
'type' => 'sliding_checkbox',
'label' => __( 'Relative protocol', 'rocket' ),
'description' => __( 'Should only be used with Cloudflare\'s flexible SSL feature. URLs of static files (CSS, JS, images) will be rewritten to use // instead of http:// or https://.', 'rocket' ),
'default' => 0,
'section' => 'cloudflare_settings',
'page' => 'cloudflare',
'sanitize_callback' => 'sanitize_checkbox',
],
]
);
}
/**
* Registers Sucuri cache section.
*
* @since 3.2
*/
private function sucuri_section() {
if ( defined( 'WP_ROCKET_SUCURI_API_KEY_HIDDEN' ) && WP_ROCKET_SUCURI_API_KEY_HIDDEN ) {
return;
}
$sucuri_beacon = $this->beacon->get_suggest( 'sucuri_credentials' );
$this->settings->add_page_section(
'sucuri',
[
'title' => __( 'Sucuri', 'rocket' ),
'menu_description' => '',
'class' => [
'wpr-subMenuItem',
'wpr-addonSubMenuItem',
],
]
);
$this->settings->add_settings_sections(
[
'sucuri_credentials' => [
'type' => 'fields_container',
'title' => __( 'Sucuri credentials', 'rocket' ),
'page' => 'sucuri',
'help' => [
'id' => $sucuri_beacon['id'],
'url' => $sucuri_beacon['url'],
],
],
]
);
$this->settings->add_settings_fields(
[
'sucury_waf_api_key' => [
'label' => _x( 'Firewall API key (for plugin), must be in format {32 characters}/{32 characters}
:', 'Sucuri', 'rocket' ),
'description' => sprintf( '%2$s', 'https://kb.sucuri.net/firewall/Performance/clearing-cache', _x( 'Find your API key', 'Sucuri', 'rocket' ) ),
'default' => '',
'section' => 'sucuri_credentials',
'page' => 'sucuri',
],
]
);
}
/**
* Sets hidden fields.
*
* @since 3.0
*/
private function hidden_fields() {
$this->settings->add_hidden_settings_fields(
/**
* Filters the hidden settings fields
*
* @since 3.5
* @author Remy Perona
*
* @param array $hidden_settings_fields An array of hidden settings fields ID
*/
apply_filters(
'rocket_hidden_settings_fields',
[
'consumer_key',
'consumer_email',
'secret_key',
'license',
'secret_cache_key',
'minify_css_key',
'minify_js_key',
'version',
'cloudflare_old_settings',
'sitemap_preload_url_crawl',
'cache_ssl',
'minify_google_fonts',
'emoji',
'remove_unused_css',
'async_css',
]
)
);
}
/**
* Sanitize and format a list.
*
* @since 3.5.5
*
* @param array $list A list of strings.
* @param string $tag_name Name of the HTML tag that will wrap each element of the list.
* @return array
*/
private function sanitize_and_format_list( $list, $tag_name = 'strong' ) {
if ( ! is_array( $list ) || empty( $list ) ) {
return [];
}
$list = array_filter( $list );
if ( empty( $list ) ) {
return [];
}
$list = array_unique( $list );
if ( empty( $tag_name ) ) {
return $list;
}
$format = "<$tag_name>%s$tag_name>";
return array_map( 'sprintf', array_fill( 0, count( $list ), $format ), $list );
}
/**
* Checks if combine JS option should be disabled
*
* @since 3.9
*
* @return bool
*/
private function disable_combine_js(): bool {
if ( (bool) get_rocket_option( 'delay_js', 0 ) ) {
return true;
}
return ! (bool) get_rocket_option( 'minify_js', 0 );
}
/**
* Render radio options sub fields.
*
* @since 3.10
*
* @param array $sub_fields Array of fields to display.
*/
public function display_radio_options_sub_fields( $sub_fields ) {
$sub_fields = $this->settings->set_radio_buttons_sub_fields_value( $sub_fields );
$this->render->render_fields( $sub_fields );
}
}
Commentaires récents