Добавление параметра URL к JPEG-изображениям в сообщениях

Вопрос или проблема

Чтобы избежать проблем с кэшированием изображений, я хотел бы, чтобы WordPress ссылался на мои jpeg изображения с помощью URL параметра. Я знаю, что в javascript я могу сделать это:

<img id="idSigma" src="#" class="classSigma">
<script>
$(document).ready(function() {
  var d = new Date();
  $("#idSigma").attr("src", "images/Sigma.jpeg?t=" + d.getTime());
});
</script>

Есть ли способ заставить WordPress делать это для всех внутренних ссылок? Например, если я щелкну правой кнопкой мыши на изображении в записи блога и выберу открыть изображение, оно уже будет указывать на ссылку с URL параметром. Это обеспечит, что все изображения будут свежими, так как я планирую обновлять их ежедневно. Моей первой мыслью было поискать этот код в media.php, но, возможно, есть более лучший способ, чем модификация исходного кода.


Правка, вот что у меня есть на данный момент, это работает в моем php эмуляторе, когда я устанавливаю переменную $content, но ничего не делает в WordPress:

function add_jpeg_params($content){

preg_match_all("/https?:\/\/[^\/\s]+\/\S+\.(jpg|jpeg)/", $content, $output_array);

$items_to_replace = array_unique($output_array[0]);
$items_to_replace = array_values($items_to_replace);

for ($j = 0; $j < sizeof($items_to_replace); $j++) {

    $content = preg_replace('~' . $items_to_replace[$j] . '~', $items_to_replace[$j] . '?t=" . time(), $content);
} 
return $content;
}
add_filter("the_content','add_jpeg_params');

Я добавил это в functions.php в своей теме WordPress.

Правка 2: Решение опубликовано ниже. Хук, который мне был нужен, это ‘post_thumbnail_html’.

function add_jpeg_params($content){

preg_match_all("/https?:\/\/[^\/\s]+\/\S+\.(jpg|jpeg)/", $content, $output_array);

$items_to_replace = array_unique($output_array[0]);
$items_to_replace = array_values($items_to_replace);

for ($j = 0; $j < sizeof($items_to_replace); $j++) {

    $content = str_replace($items_to_replace[$j], $items_to_replace[$j] . '?t=" . time(), $content);
}

return $content;
}
add_filter("the_content','add_jpeg_params',10);
add_filter('post_thumbnail_html', 'add_jpeg_params' );

@kingsgambit

Я хочу передать следующие параметры URL в конце каждого изображения на сайте WordPress: ?f=auto

Я использую WooCommerce и хотел бы добавить следующие параметры URL в конце каждого изображения на своем сайте WordPress.

Не могли бы вы помочь мне с этим?
С уважением!!

Ответ или решение

Чтобы избежать проблем с кэшированием изображений в WordPress, вы можете использовать URL-параметры для JPEG-изображений в своих постах. Данный подход обеспечит обновление изображений без необходимости очищать кэш. В этом ответе мы рассмотрим, как добавить параметры к URL изображений через функции WordPress.

1. Зачем использовать URL-параметры для изображений?

При изменении или обновлении изображений, веб-браузеры или прокси-серверы могут кэшировать старые версии изображений. Это может привести к тому, что пользователи не увидят последних обновлений. Использование URL-параметров (например, ?t={timestamp} или ?f=auto) позволяет браузерам воспринимать каждую изменённую ссылку как уникальную, что предотвращает использование кэша.

2. Как реализовать добавление параметров с помощью PHP в WordPress?

Для добавления параметров к изображениям в постах WordPress, вы можете использовать хук the_content. Это позволяет изменять HTML-код контента перед его отображением. Вот пример кода, который вы можете разместить в файле functions.php вашей темы WordPress:

function add_jpeg_params($content) {
    // Находим все JPEG-ссылки в контенте
    preg_match_all("/https?:\/\/[^\/\s]+\/\S+\.(jpg|jpeg)/", $content, $output_array);

    // Убираем дубликаты
    $items_to_replace = array_unique($output_array[0]);

    foreach ($items_to_replace as $item) {
        // Заменяем старую ссылку на новую с параметрами
        $content = str_replace($item, $item . '?t=' . time(), $content);
    }

    return $content;
}
// Добавляем фильтры для контента и изображений постов
add_filter('the_content', 'add_jpeg_params', 10);
add_filter('post_thumbnail_html', 'add_jpeg_params');

3. Как это работает?

  • Функция add_jpeg_params: Эта функция сначала использует регулярное выражение для поиска всех JPEG-ссылок в содержимом поста.
  • Удаление дубликатов: Мы используем array_unique, чтобы гарантировать, что каждая ссылка будет обработана только один раз.
  • Замена ссылок: Затем каждая ссылка заменяется на новую версию с добавленным параметром времени, что гарантирует, что браузеры загружают актуальную версию изображения.
  • Фильтры: Добавление фильтров the_content и post_thumbnail_html позволяет применить изменения как к содержимому поста, так и к изображениям, установленным в качестве миниатюр.

4. Добавление параметров для WooCommerce

Если вашему интернет-магазину на WooCommerce также необходимо добавлять параметры к изображениям, этот код всё также будет работать для товаров. Объект $content включает изображения, используемые в описаниях товаров, так что не требуется дополнительных модификаций.

5. Заключение

Применение параметров к URL изображений обеспечивает актуальность вашего контента на сайте, снижая риск кэширования старых версий изображений. Предложенный код — это простой и эффективный способ решения этой проблемы в WordPress. Убедитесь, что вы тщательно протестировали изменения на своем сайте, чтобы убедиться в корректной работе и отсутствии негативных последствий на производительность сайта.

Оцените материал
Добавить комментарий

Капча загружается...