/** * Get all translated path of a specific post with ID. * * @since 2.4 * * @param int $post_id Post ID * @param string $post_type Post Type * @param string $regex Regex to include at the end * @return array $urls */ function get_rocket_i18n_translated_post_urls($post_id, $post_type = 'page', $regex = null) { $urls = array(); $path = parse_url(get_permalink($post_id), PHP_URL_PATH); $langs = get_rocket_i18n_code(); if (empty($path)) { return $urls; } // WPML if (rocket_is_plugin_active('sitepress-multilingual-cms/sitepress.php')) { foreach ($langs as $lang) { $urls[] = parse_url(get_permalink(icl_object_id($post_id, $post_type, true, $lang)), PHP_URL_PATH) . $regex; } } // qTranslate if (rocket_is_plugin_active('qtranslate/qtranslate.php')) { $langs = $GLOBALS['q_config']['enabled_languages']; $langs = array_diff($langs, array($GLOBALS['q_config']['default_language'])); $url = get_permalink($post_id); $urls[] = parse_url(get_permalink($post_id), PHP_URL_PATH) . $regex; foreach ($langs as $lang) { $urls[] = parse_url(qtrans_convertURL($url, $lang, true), PHP_URL_PATH) . $regex; } } // Polylang if (rocket_is_plugin_active('polylang/polylang.php') && is_object($GLOBALS['polylang']->model) && ($translations = $GLOBALS['polylang']->model->get_translations('page', $post_id))) { foreach ($translations as $post_id) { $urls[] = parse_url(get_permalink($post_id), PHP_URL_PATH) . $regex; } } if (trim($path, '/') != '') { $urls[] = $path . $regex; } $urls = array_unique($urls); return $urls; }
function rocket_post_purge_urls_for_qtranslate($urls) { if (rocket_is_plugin_active('qtranslate/qtranslate.php')) { global $q_config; // Get all languages $enabled_languages = $q_config['enabled_languages']; // Remove default language $enabled_languages = array_diff($enabled_languages, array($q_config['default_language'])); // Add translate URLs foreach ($urls as $url) { foreach ($enabled_languages as $lang) { $urls[] = qtrans_convertURL($url, $lang, true); } } } return $urls; }
function rocket_init() { // Load translations load_plugin_textdomain('rocket', false, dirname(plugin_basename(__FILE__)) . '/languages/'); // Nothing to do if autosave if (defined('DOING_AUTOSAVE')) { return; } // Necessary to call correctly WP Rocket Bot for cache json global $do_rocket_bot_cache_json; $do_rocket_bot_cache_json = false; // Call defines, classes and functions require WP_ROCKET_API_PATH . 'cloudflare.php'; require WP_ROCKET_FUNCTIONS_PATH . 'options.php'; // Last constants define('WP_ROCKET_PLUGIN_NAME', get_rocket_option('wl_plugin_name', 'WP Rocket')); define('WP_ROCKET_PLUGIN_SLUG', sanitize_key(WP_ROCKET_PLUGIN_NAME)); // Call defines, classes and functions require WP_ROCKET_FUNCTIONS_PATH . 'files.php'; require WP_ROCKET_FUNCTIONS_PATH . 'posts.php'; require WP_ROCKET_FUNCTIONS_PATH . 'admin.php'; require WP_ROCKET_FUNCTIONS_PATH . 'formatting.php'; require WP_ROCKET_FUNCTIONS_PATH . 'cdn.php'; require WP_ROCKET_FUNCTIONS_PATH . 'minify.php'; require WP_ROCKET_FUNCTIONS_PATH . 'plugins.php'; require WP_ROCKET_FUNCTIONS_PATH . 'i18n.php'; require WP_ROCKET_FUNCTIONS_PATH . 'bots.php'; require WP_ROCKET_FUNCTIONS_PATH . 'cloudflare.php'; require WP_ROCKET_FUNCTIONS_PATH . 'htaccess.php'; require WP_ROCKET_INC_PATH . 'deprecated.php'; require WP_ROCKET_FRONT_PATH . 'hosting-compatibility.php'; require WP_ROCKET_FRONT_PATH . 'plugin-compatibility.php'; require WP_ROCKET_FRONT_PATH . 'theme-compatibility.php'; require WP_ROCKET_COMMON_PATH . 'admin-bar.php'; require dirname(__FILE__) . '/licence-data.php'; if (rocket_valid_key()) { require WP_ROCKET_COMMON_PATH . 'purge.php'; require WP_ROCKET_COMMON_PATH . 'cron.php'; if (0 < (int) get_rocket_option('cdn')) { require WP_ROCKET_FRONT_PATH . 'cdn.php'; } if (0 < (int) get_rocket_option('do_cloudflare')) { require WP_ROCKET_VENDORS_PATH . 'ip_in_range.php'; require WP_ROCKET_COMMON_PATH . 'cloudflare.php'; } if (defined('SUNRISE') && SUNRISE == 'on' && function_exists('domain_mapping_siteurl')) { require WP_ROCKET_INC_PATH . '/domain-mapping.php'; } } if (is_admin()) { require WP_ROCKET_ADMIN_PATH . 'ajax.php'; require WP_ROCKET_ADMIN_PATH . 'upgrader.php'; require WP_ROCKET_ADMIN_PATH . 'updater.php'; require WP_ROCKET_ADMIN_PATH . 'class-repeater-field.php'; require WP_ROCKET_ADMIN_PATH . 'options.php'; require WP_ROCKET_ADMIN_PATH . 'admin.php'; require WP_ROCKET_ADMIN_PATH . 'plugin-compatibility.php'; require WP_ROCKET_ADMIN_UI_PATH . 'enqueue.php'; require WP_ROCKET_ADMIN_UI_PATH . 'notices.php'; require WP_ROCKET_ADMIN_UI_PATH . 'meta-boxes.php'; } else { if (rocket_valid_key()) { require WP_ROCKET_FRONT_PATH . 'minify.php'; require WP_ROCKET_FRONT_PATH . 'cookie.php'; require WP_ROCKET_FRONT_PATH . 'images.php'; require WP_ROCKET_FRONT_PATH . 'enqueue.php'; require WP_ROCKET_FRONT_PATH . 'dns-prefetch.php'; if (get_rocket_option('deferred_js_files')) { require WP_ROCKET_FRONT_PATH . 'deferred-js.php'; } // Don't insert the LazyLoad file if Rocket LazyLoad is activated if (!rocket_is_plugin_active('rocket-lazy-load/rocket-lazy-load.php')) { require WP_ROCKET_FRONT_PATH . 'lazyload.php'; } } } // You can hook this to trigger any action when WP Rocket is correctly loaded, so, not in AUTOSAVE mode if (rocket_valid_key()) { /** * Fires when WP Rocket is correctly loaded * * @since 1.0 */ do_action('wp_rocket_loaded'); } }
function rocket_admin_bar($wp_admin_bar) { if (!current_user_can(apply_filters('rocket_capacity', 'manage_options'))) { return; } $action = 'purge_cache'; // Parent $wp_admin_bar->add_menu(array('id' => 'wp-rocket', 'title' => WP_ROCKET_PLUGIN_NAME, 'href' => admin_url('options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG))); // Settings $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'rocket-settings', 'title' => __('Settings', 'rocket'), 'href' => admin_url('options-general.php?page=' . WP_ROCKET_PLUGIN_SLUG))); if (rocket_valid_key()) { if (rocket_is_plugin_active('sitepress-multilingual-cms/sitepress.php')) { // Purge All $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'purge-all', 'title' => __('Clear cache', 'rocket'), 'href' => '#')); if ($langlinks = get_rocket_wpml_langs_for_admin_bar()) { foreach ($langlinks as $lang) { $wp_admin_bar->add_menu(array('parent' => 'purge-all', 'id' => 'purge-all-' . $lang['code'], 'title' => $lang['flag'] . ' ' . $lang['anchor'], 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&type=all&lang=' . $lang['code']), $action . '_all'))); } } } else { if (rocket_is_plugin_active('qtranslate/qtranslate.php') || rocket_is_plugin_active('polylang/polylang.php')) { // Purge All $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'purge-all', 'title' => __('Clear cache', 'rocket'), 'href' => '#')); // Add submenu for each active langs if (rocket_is_plugin_active('qtranslate/qtranslate.php')) { $langlinks = get_rocket_qtranslate_langs_for_admin_bar(); } else { if (rocket_is_plugin_active('polylang/polylang.php')) { $langlinks = get_rocket_polylang_langs_for_admin_bar(); } } foreach ($langlinks as $lang) { $wp_admin_bar->add_menu(array('parent' => 'purge-all', 'id' => 'purge-all-' . $lang['code'], 'title' => $lang['flag'] . ' ' . $lang['anchor'], 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&type=all&lang=' . $lang['code']), $action . '_all'))); } // Add subemnu "All langs" $wp_admin_bar->add_menu(array('parent' => 'purge-all', 'id' => 'purge-all-all', 'title' => '<div class="dashicons-before dashicons-admin-site" style="line-height:1.5"> ' . __('All languages', 'rocket') . '</div>', 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&type=all&lang=all'), $action . '_all'))); } else { // Purge All $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'purge-all', 'title' => __('Clear cache', 'rocket'), 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&type=all'), $action . '_all'))); } } if (is_admin()) { // Purge a post global $pagenow, $post; if ($post && 'post.php' == $pagenow && isset($_GET['action'], $_GET['post'])) { $pobject = get_post_type_object($post->post_type); $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'purge-post', 'title' => __('Clear this post', 'rocket'), 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&type=post-' . $post->ID), $action . '_post-' . $post->ID))); } } else { // Purge this URL (frontend) $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'purge-url', 'title' => __('Purge this URL', 'rocket'), 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&type=url'), $action . '_url'))); } $action = 'preload'; // Go robot gogo ! if (rocket_is_plugin_active('sitepress-multilingual-cms/sitepress.php')) { $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'preload-cache', 'title' => __('Preload cache', 'rocket'), 'href' => '#')); if ($langlinks = get_rocket_wpml_langs_for_admin_bar()) { foreach ($langlinks as $lang) { $wp_admin_bar->add_menu(array('parent' => 'preload-cache', 'id' => 'preload-cache-' . $lang['code'], 'title' => $lang['flag'] . ' ' . $lang['anchor'], 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&lang=' . $lang['code']), $action))); } } } else { if (rocket_is_plugin_active('qtranslate/qtranslate.php') || rocket_is_plugin_active('polylang/polylang.php')) { $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'preload-cache', 'title' => __('Preload cache', 'rocket'), 'href' => '#')); if (rocket_is_plugin_active('qtranslate/qtranslate.php')) { $langlinks = get_rocket_qtranslate_langs_for_admin_bar(); } else { if (rocket_is_plugin_active('polylang/polylang.php')) { $langlinks = get_rocket_polylang_langs_for_admin_bar(); } } foreach ($langlinks as $lang) { $wp_admin_bar->add_menu(array('parent' => 'preload-cache', 'id' => 'preload-cache-' . $lang['code'], 'title' => $lang['flag'] . ' ' . $lang['anchor'], 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&lang=' . $lang['code']), $action))); } $wp_admin_bar->add_menu(array('parent' => 'preload-cache', 'id' => 'preload-cache-all', 'title' => '<div class="dashicons-before dashicons-admin-site" style="line-height:1.5;"> ' . __('All languages', 'rocket') . '</div>', 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action . '&lang=all'), $action))); } else { $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'preload-cache', 'title' => __('Preload cache', 'rocket'), 'href' => wp_nonce_url(admin_url('admin-post.php?action=' . $action), $action))); } } } if (!rocket_is_white_label()) { // Go to WP Rocket Documentation $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'docs', 'title' => __('Documentation', 'rocket'), 'href' => 'http://docs.wp-rocket.me')); // Go to WP Rocket Support $wp_admin_bar->add_menu(array('parent' => 'wp-rocket', 'id' => 'support', 'title' => __('Support', 'rocket'), 'href' => 'http://wp-rocket.me/support/')); } }