- WP Super Cache enabled (PHP mode, gzip, Nginx compatible) - Autoptimize: CSS/HTML minification + deferred JS + Google Fonts optimization - Cookie Notice: GDPR/LOPD banner styled with brand colors (navy/burgundy/gold) - Legal pages: Aviso Legal, Política de Privacidad, Política de Cookies (ES) - MU-plugin: custom footer with legal links + Cloud Host credit - Footer: copyright, legal nav, Hosted & Maintained by Cloud Host (cloudhost.es) - Security: X-Frame-Options, X-Content-Type, Referrer-Policy headers - Security: XML-RPC disabled, REST user enumeration blocked - Performance: emoji scripts removed, post revisions limited to 3
143 lines
5.0 KiB
PHP
143 lines
5.0 KiB
PHP
<?php
|
|
|
|
function wp_super_cache_wptouch_admin() {
|
|
global $cache_wptouch, $wp_cache_config_file, $valid_nonce;
|
|
|
|
$cache_wptouch = '' === $cache_wptouch ? '0' : $cache_wptouch;
|
|
|
|
if ( isset( $_POST['cache_wptouch'] ) && $valid_nonce ) {
|
|
if ( $cache_wptouch === (int) $_POST['cache_wptouch'] ) {
|
|
$changed = false;
|
|
} else {
|
|
$changed = true;
|
|
}
|
|
$cache_wptouch = (int) $_POST['cache_wptouch'];
|
|
wp_cache_replace_line( '^ *\$cache_wptouch', "\$cache_wptouch = '$cache_wptouch';", $wp_cache_config_file );
|
|
}
|
|
$id = 'wptouch-section';
|
|
?>
|
|
<fieldset id="<?php echo $id; ?>" class="options">
|
|
<h4><?php _e( 'WPTouch', 'wp-super-cache' ); ?></h4>
|
|
<form name="wp_manager" action="" method="post">
|
|
<label><input type="radio" name="cache_wptouch" value="1" <?php if ( $cache_wptouch ) { echo 'checked="checked" '; } ?>/> <?php _e( 'Enabled', 'wp-super-cache' ); ?></label>
|
|
<label><input type="radio" name="cache_wptouch" value="0" <?php if ( ! $cache_wptouch ) { echo 'checked="checked" '; } ?>/> <?php _e( 'Disabled', 'wp-super-cache' ); ?></label>
|
|
<?php
|
|
echo '<p>' . __( 'Provides support for <a href="https://wordpress.org/plugins/wptouch/">WPTouch</a> mobile theme and plugin.', 'wp-super-cache' ) . '</p>';
|
|
if ( isset( $changed ) && $changed ) {
|
|
if ( $cache_wptouch ) {
|
|
$status = __( 'enabled', 'wp-super-cache' );
|
|
} else {
|
|
$status = __( 'disabled', 'wp-super-cache' );
|
|
}
|
|
echo '<p><strong>' . sprintf( __( 'WPTouch support is now %s', 'wp-super-cache' ), $status ) . '</strong></p>';
|
|
}
|
|
echo '<div class="submit"><input class="button-primary" ' . SUBMITDISABLED . 'type="submit" value="' . __( 'Update', 'wp-super-cache' ) . '" /></div>';
|
|
wp_nonce_field( 'wp-cache' );
|
|
?>
|
|
</form>
|
|
</fieldset>
|
|
<?php
|
|
}
|
|
add_cacheaction( 'cache_admin_page', 'wp_super_cache_wptouch_admin' );
|
|
|
|
function wp_super_cache_wptouch_notice() {
|
|
global $cache_enabled;
|
|
if ( $cache_enabled ) {
|
|
echo '<div class="error"><p><strong>' . __( 'WPTouch plugin detected! Please go to the Supercache plugins page and enable the WPTouch helper plugin.', 'wp-super-cache' ) . '</strong></p></div>';
|
|
}
|
|
}
|
|
function wp_super_cache_wptouch_exists() {
|
|
global $cache_wptouch;
|
|
if ( '1' === $cache_wptouch ) {
|
|
return false;
|
|
}
|
|
|
|
if ( is_admin() && function_exists( 'wptouch_get_plugin_dir_name' ) ) {
|
|
add_action( 'admin_notices', 'wp_super_cache_wptouch_notice' );
|
|
}
|
|
}
|
|
|
|
if ( isset( $_GET['page'] ) && 'wpsupercache' === $_GET['page'] ) {
|
|
add_cacheaction( 'add_cacheaction', 'wp_super_cache_wptouch_exists' );
|
|
}
|
|
|
|
// disable mobile checking if.
|
|
function wp_super_cache_maybe_disable_wptouch( $t ) {
|
|
global $cache_wptouch, $wptouch_exclude_ua;
|
|
if ( '1' !== $cache_wptouch ) {
|
|
return false;
|
|
}
|
|
|
|
if ( ( isset( $_COOKIE['wptouch_switch_toggle'] ) && 'normal' === $_COOKIE['wptouch_switch_toggle'] ) ||
|
|
( isset( $_COOKIE['wptouch-pro-view'] ) && 'desktop' === $_COOKIE['wptouch-pro-view'] ) ) {
|
|
return true;
|
|
}
|
|
|
|
$ua = explode( ',', $wptouch_exclude_ua );
|
|
foreach ( $ua as $agent ) {
|
|
if ( preg_match( "#$agent#i", $_SERVER['HTTP_HOST'] ) ) {
|
|
return true; // disable mobile ua check if matches the exclude list in wptouch.
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
add_cacheaction( 'disable_mobile_check', 'wp_super_cache_maybe_disable_wptouch' );
|
|
|
|
function wp_super_cache_wptouch_browsers( $browsers ) {
|
|
global $wptouch_exclude_ua, $wp_cache_config_file;
|
|
|
|
if ( false === function_exists( 'bnc_wptouch_get_exclude_user_agents' ) || false === function_exists( 'bnc_wptouch_get_user_agents' ) ) {
|
|
return $browsers;
|
|
}
|
|
|
|
$browsers = implode( ',', bnc_wptouch_get_exclude_user_agents() ); // hack, support exclude agents too.
|
|
if ( $browsers !== $wptouch_exclude_ua ) {
|
|
wp_cache_replace_line( '^ *\$wptouch_exclude_ua', "\$wptouch_exclude_ua = '$browsers';", $wp_cache_config_file );
|
|
$wptouch_exclude_ua = $browsers;
|
|
}
|
|
|
|
return bnc_wptouch_get_user_agents();
|
|
}
|
|
|
|
function wp_super_cache_wptouch_prefixes( $prefixes ) {
|
|
return array(); // wptouch doesn't support UA prefixes.
|
|
}
|
|
|
|
function wp_super_cache_wptouch_cookie_check( $cache_key ) {
|
|
if ( false === isset( $_COOKIE['wptouch_switch_toggle'] ) ) {
|
|
return $cache_key;
|
|
}
|
|
if ( 'normal' === $_COOKIE['wptouch_switch_toggle'] || 'mobile' === $_COOKIE['wptouch_switch_toggle'] ) {
|
|
return $_COOKIE['wptouch_switch_toggle'];
|
|
}
|
|
|
|
if ( isset( $_COOKIE['wptouch-pro-view'] ) ) {
|
|
if ( 'desktop' === $_COOKIE['wptouch-pro-view'] ) {
|
|
return 'normal';
|
|
} else {
|
|
return $_COOKIE['wptouch-pro-view'];
|
|
}
|
|
}
|
|
|
|
return $cache_key;
|
|
}
|
|
|
|
if ( isset( $cache_wptouch ) && '1' === $cache_wptouch ) {
|
|
add_cacheaction( 'wp_super_cache_mobile_browsers', 'wp_super_cache_wptouch_browsers' );
|
|
add_cacheaction( 'wp_super_cache_mobile_prefixes', 'wp_super_cache_wptouch_prefixes' );
|
|
add_cacheaction( 'wp_cache_check_mobile', 'wp_super_cache_wptouch_cookie_check' );
|
|
}
|
|
|
|
function wpsc_wptouch_list( $list ) {
|
|
$list['wptouch'] = array(
|
|
'key' => 'wptouch',
|
|
'url' => 'https://wordpress.org/plugins/wptouch/',
|
|
'title' => __( 'WPTouch', 'wp-super-cache' ),
|
|
'desc' => __( 'Provides support for WPTouch mobile theme and plugin.', 'wp-super-cache' ),
|
|
);
|
|
return $list;
|
|
}
|
|
add_cacheaction( 'wpsc_filter_list', 'wpsc_wptouch_list' );
|