Как остановить W3 Total Cache от глобальной замены URL в Wordpress

Я пытаюсь создать кастом wp_head реализация в теме Wordpress для работы вместе с оригинальным методом.

Я настроил свой код, как это в functions.php:

function wp_head_r()
{
    echo '<script src="http://sample-url.com/js/file.js"></script>';
} 

Тогда в header.php у меня есть это:

wp_head();     //original
wp_head_r();

У меня проблема в том, что в установленной мной Wordpress установлен W3 Total Cache. Так что происходит, что любой файл, который имеет sample-url.com который ссылается на файл JavaScript или CSS заменяется на sample-url-cdn.com прежде чем он выводится на страницу.

Это происходило с сценариями и таблицами стилей в очереди, и я подумал, что настройка пользовательских wp_head Метод предотвратит это, но это не так.

Можно ли создать какой-то фильтр, чтобы предотвратить глобальный замещение всех URL в W3 Total Cache?

1 ответ

Мне удалось это выяснить. Хитрость заключается в том, чтобы использовать фильтр с высоким приоритетом, эффективно перекрывающий [я думаю] тот, который использует W3 Total Cache.

Вот код [для functions.php]:

function my_filter_w3tc_cdn_url( $new_url, $url, $is_engine_mirror )
{
    if(preg_match('/\/(my_special_dir_pattern)/i', $new_url))
    {
        $new_url = $url;
    }

    return $new_url;
};

add_filter( 'w3tc_cdn_url', 'my_filter_w3tc_cdn_url', 100, 3 );

я использовал preg_match нацелить все URL-адреса, которые соответствуют определенному шаблону, а затем исключить их из обновления до URL-адреса CDN. Также обратите внимание, что я использовал приоритет 100, который кажется достаточно высоким и работал в моем конкретном случае использования.

Надеюсь, поможет.

Другие вопросы по тегам