Example #1
0
/**
 * 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;
}
Example #2
0
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;
}
Example #3
0
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');
    }
}
Example #4
0
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'] . '&nbsp;' . $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'] . '&nbsp;' . $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'] . '&nbsp;' . $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'] . '&nbsp;' . $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/'));
    }
}