286 lines
7.7 KiB
PHP
286 lines
7.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Add Yoast SEO sitemap option to WP Rocket default options
|
|
*
|
|
* @since 2.8
|
|
* @since 3.11.1 deprecated
|
|
*
|
|
* @author Remy Perona
|
|
*
|
|
* @param array $options WP Rocket options array.
|
|
* @return array Updated WP Rocket options array
|
|
*/
|
|
function rocket_add_yoast_seo_sitemap_option( $options ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
|
|
$options['yoast_xml_sitemap'] = 0;
|
|
|
|
return $options;
|
|
}
|
|
|
|
/**
|
|
* Sanitize Yoast SEO sitemap option value
|
|
*
|
|
* @since 2.8
|
|
* @since 3.11.1 deprecated
|
|
*
|
|
* @author Remy Perona
|
|
*
|
|
* @param array $inputs WP Rocket inputs array.
|
|
* @return array Sanitized WP Rocket inputs array
|
|
*/
|
|
function rocket_yoast_seo_sitemap_option_sanitize( $inputs ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
|
|
$inputs['yoast_xml_sitemap'] = ! empty( $inputs['yoast_xml_sitemap'] ) ? 1 : 0;
|
|
|
|
return $inputs;
|
|
}
|
|
|
|
/**
|
|
* Add Yoast SEO sitemap URL to the sitemaps to preload
|
|
*
|
|
* @since 2.8
|
|
* @since 3.11.1 deprecated
|
|
*
|
|
* @author Remy Perona
|
|
*
|
|
* @param array $sitemaps Sitemaps to preload.
|
|
* @return array Updated Sitemaps to preload
|
|
*/
|
|
function rocket_add_yoast_seo_sitemap( $sitemaps ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
|
|
if ( get_rocket_option( 'yoast_xml_sitemap', false ) ) {
|
|
$sitemaps[] = WPSEO_Sitemaps_Router::get_base_url( 'sitemap_index.xml' );
|
|
}
|
|
|
|
return $sitemaps;
|
|
}
|
|
|
|
/**
|
|
* Add Yoast SEO option to WP Rocket settings
|
|
*
|
|
* @since 2.8
|
|
* @since 3.11.1 deprecated
|
|
*
|
|
* @author Remy Perona
|
|
*
|
|
* @param array $options WP Rocket settings array.
|
|
* @return array Updated WP Rocket settings array
|
|
*/
|
|
function rocket_sitemap_preload_yoast_seo_option( $options ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
|
|
$options['yoast_xml_sitemap'] = [
|
|
'type' => 'checkbox',
|
|
'container_class' => [
|
|
'wpr-field--children',
|
|
],
|
|
'label' => __( 'Yoast SEO XML sitemap', 'rocket' ),
|
|
// translators: %s = Name of the plugin.
|
|
'description' => sprintf( __( 'We automatically detected the sitemap generated by the %s plugin. You can check the option to preload it.', 'rocket' ), 'Yoast SEO' ),
|
|
'parent' => 'sitemap_preload',
|
|
'section' => 'preload_section',
|
|
'page' => 'preload',
|
|
'default' => 0,
|
|
'sanitize_callback' => 'sanitize_checkbox',
|
|
];
|
|
|
|
return $options;
|
|
}
|
|
|
|
/**
|
|
* Clear Kinsta cache when clearing WP Rocket cache
|
|
*
|
|
* @since 3.0
|
|
* @author Remy Perona
|
|
*
|
|
* @return void
|
|
*/
|
|
function rocket_clean_kinsta_cache() {
|
|
global $kinsta_cache;
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
|
|
if ( ! empty( $kinsta_cache->kinsta_cache_purge ) ) {
|
|
$kinsta_cache->kinsta_cache_purge->purge_complete_caches();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Partially clear Kinsta cache when partially clearing WP Rocket cache
|
|
*
|
|
* @since 3.0
|
|
* @author Remy Perona
|
|
*
|
|
* @param object $post Post object.
|
|
* @return void
|
|
*/
|
|
function rocket_clean_kinsta_post_cache( $post ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
global $kinsta_cache;
|
|
$kinsta_cache->kinsta_cache_purge->initiate_purge( $post->ID, 'post' );
|
|
}
|
|
|
|
|
|
/**
|
|
* Clears Kinsta cache for the homepage URL when using "Purge this URL" from the admin bar on the front end
|
|
*
|
|
* @since 3.0.4
|
|
* @author Remy Perona
|
|
*
|
|
* @param string $root WP Rocket root cache path.
|
|
* @param string $lang Current language.
|
|
* @return void
|
|
*/
|
|
function rocket_clean_kinsta_cache_home( $root = '', $lang = '' ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
$url = get_rocket_i18n_home_url( $lang );
|
|
$url = trailingslashit( $url ) . 'kinsta-clear-cache/';
|
|
|
|
wp_remote_get(
|
|
$url,
|
|
[
|
|
'blocking' => false,
|
|
'timeout' => 0.01,
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Clears Kinsta cache for a specific URL when using "Purge this URL" from the admin bar on the front end
|
|
*
|
|
* @since 3.0.4
|
|
* @author Remy Perona
|
|
*
|
|
* @param string $url URL to purge.
|
|
* @return void
|
|
*/
|
|
function rocket_clean_kinsta_cache_url( $url ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
$url = trailingslashit( $url ) . 'kinsta-clear-cache/';
|
|
|
|
wp_remote_get(
|
|
$url,
|
|
[
|
|
'blocking' => false,
|
|
'timeout' => 0.01,
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Remove WP Rocket functions on WP core action hooks to prevent triggering a double cache clear.
|
|
*
|
|
* @since 3.0
|
|
* @author Remy Perona
|
|
*
|
|
* @return void
|
|
*/
|
|
function rocket_remove_partial_purge_hooks() {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.1' );
|
|
// WP core action hooks rocket_clean_post() gets hooked into.
|
|
$clean_post_hooks = [
|
|
// Disables the refreshing of partial cache when content is edited.
|
|
'wp_trash_post',
|
|
'delete_post',
|
|
'clean_post_cache',
|
|
'wp_update_comment_count',
|
|
];
|
|
|
|
// Remove rocket_clean_post() from core action hooks.
|
|
array_map(
|
|
function( $hook ) {
|
|
remove_action( $hook, 'rocket_clean_post' );
|
|
},
|
|
$clean_post_hooks
|
|
);
|
|
|
|
remove_filter( 'rocket_clean_files', 'rocket_clean_files_users' );
|
|
}
|
|
|
|
/**
|
|
* Do the rollback
|
|
*
|
|
* @since 3.11.5 deprecated
|
|
* @since 2.4
|
|
*/
|
|
function rocket_rollback() {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.5' );
|
|
if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'rocket_rollback' ) ) {
|
|
wp_nonce_ays( '' );
|
|
}
|
|
|
|
/**
|
|
* Fires before doing the rollback
|
|
*/
|
|
do_action( 'rocket_before_rollback' );
|
|
|
|
$plugin_transient = get_site_transient( 'update_plugins' );
|
|
$plugin_folder = plugin_basename( dirname( WP_ROCKET_FILE ) );
|
|
$plugin = $plugin_folder . '/' . basename( WP_ROCKET_FILE );
|
|
|
|
$plugin_transient->response[ $plugin ] = (object) [
|
|
'slug' => $plugin_folder,
|
|
'new_version' => WP_ROCKET_LASTVERSION,
|
|
'url' => 'https://wp-rocket.me',
|
|
'package' => sprintf( 'https://wp-rocket.me/%s/wp-rocket_%s.zip', get_rocket_option( 'consumer_key' ), WP_ROCKET_LASTVERSION ),
|
|
];
|
|
|
|
set_site_transient( 'update_plugins', $plugin_transient );
|
|
|
|
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
|
|
|
|
// translators: %s is the plugin name.
|
|
$title = sprintf( __( '%s Update Rollback', 'rocket' ), WP_ROCKET_PLUGIN_NAME );
|
|
$nonce = 'upgrade-plugin_' . $plugin;
|
|
$url = 'update.php?action=upgrade-plugin&plugin=' . rawurlencode( $plugin );
|
|
$upgrader_skin = new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'plugin' ) );
|
|
$upgrader = new Plugin_Upgrader( $upgrader_skin );
|
|
|
|
remove_filter( 'site_transient_update_plugins', 'rocket_check_update', 1 );
|
|
add_filter( 'update_plugin_complete_actions', 'rocket_rollback_add_return_link' );
|
|
rocket_put_content( WP_CONTENT_DIR . '/advanced-cache.php', '' );
|
|
|
|
$upgrader->upgrade( $plugin );
|
|
|
|
wp_die(
|
|
'',
|
|
// translators: %s is the plugin name.
|
|
esc_html( sprintf( __( '%s Update Rollback', 'rocket' ), WP_ROCKET_PLUGIN_NAME ) ),
|
|
[
|
|
'response' => 200,
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* After a rollback has been done, replace the "return to" link by a link pointing to WP Rocket's tools page.
|
|
* A link to the plugins page is kept in case the plugin is not reactivated correctly.
|
|
*
|
|
* @since 3.11.5 deprecated
|
|
* @since 3.2.4
|
|
* @author Grégory Viguier
|
|
* @author Arun Basil Lal
|
|
*
|
|
* @param array $update_actions Array of plugin action links.
|
|
* @return array The array of links where the "return to" link has been replaced.
|
|
*/
|
|
function rocket_rollback_add_return_link( $update_actions ) {
|
|
_deprecated_function( __FUNCTION__ . '()', '3.11.5' );
|
|
|
|
if ( ! isset( $update_actions['plugins_page'] ) ) {
|
|
return $update_actions;
|
|
}
|
|
|
|
$update_actions['plugins_page'] = sprintf(
|
|
/* translators: 1 and 3 are link openings, 2 is a link closing. */
|
|
__( '%1$sReturn to WP Rocket%2$s or %3$sgo to Plugins page%2$s', 'rocket' ),
|
|
'<a href="' . esc_url( admin_url( 'options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG ) . '#tools' ) . '" target="_parent">',
|
|
'</a>',
|
|
'<a href="' . esc_url( admin_url( 'plugins.php' ) ) . '" target="_parent">'
|
|
);
|
|
|
|
return $update_actions;
|
|
}
|