Как найти, где используется изображение по его URL

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

Я пытаюсь оптимизировать сторонний WordPress и обнаружил, что некоторые изображения с CDN на самом деле загружаются с задержкой, поэтому я хотел бы изменить пост/страницу и т. д., где они используются, чтобы они указывали на тот же сервер. Однако я не знаю, как определить, в каком элементе используется это изображение. Как мне это сделать? Если это имеет значение, страница, похоже, использует тему под названием DIVI.

Спасибо.

 function searchstring_wpdb(){
    global $wpdb;
    $mytables=$wpdb->get_results("SHOW TABLES");    
    $ss="cdn.cloudflare.com"; //строка для поиска
    $used_is="";
    foreach ($mytables as $mytable)
    {
        foreach ($mytable as $table) 
        {
            $existing_columns = $wpdb->get_col("DESC {$table}", 0);
            foreach ($existing_columns as $existing_column) 
            {
                $last_link =$wpdb->get_results($wpdb->prepare("SELECT * FROM ".$table." WHERE ".$existing_column." LIKE %s", '%'.$ss.'%'));
                if ($last_link){
                    foreach ($last_link as $row) {
                        if (strstr($table,'postmeta')){ 
                            $used_is .= ', Используется в метаданных поста:  ' . $row->post_id;
                        } else if (strstr($table,'posts')) {        
                            $used_is .= ',  Используется в типах постов:  ' . $row->ID;
                        } else {
                            $used_is .= ', В плагине (Имя таблицы): ' . $table . ' И ID строки: '.$row->post_id.$row->ID.$row->id.'<br>';
                            $check_used = $used_is;
                        }
                    }   
                }
            }       
        }
    }
    echo $used_is; // возвращает все ID постов, где используется строка
}
add_shortcode('show_results', 'searchstring_wpdb');

Упомянутый выше код найдет строку во всех таблицах WordPress, а затем получит ID постов, где используется эта строка. Надеюсь, это поможет вам.
Вставьте код в файл functions.php темы и используйте шорткод на странице, чтобы получить все ID постов или ID строк таблицы, содержащие строку cd.clouflare.com.

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

Для оптимизации производительности третьего лица на платформе WordPress, особенно в контексте использования изображений с CDN, важно определить, где конкретное изображение, идентифицируемое по URL, применяется в контенте. Ваша задача — адаптировать ссылки на изображения, чтобы улучшить время загрузки страниц.

Описание задачи

Если вы заметили, что некоторые изображения загружаются медленно из CDN, вы можете изменить их расположение, указывая на тот же сервер, где размещен ваш сайт WordPress. Чтобы сделать это, вам необходимо определить, в каких элементах страницы (постах, страницах или метаданных) используются эти изображения. Найти это можно с помощью SQL-запросов к базе данных WordPress.

Решение с использованием SQL-запросов

В приведенном вами коде searchstring_wpdb уже имеется функция, которая осуществляет поиск строки в таблицах базы данных WordPress. Это дает вам хорошую отправную точку. Однако, я бы хотел внести некоторые дополнения для повышения эффективности работы и удобства.

Усовершенствованный вариант функции

Вы можете использовать следующий код, который не только ищет строки, но и более эффективно обрабатывает результаты. Здесь мы будем искать все местоположения использования изображений из CDN и выводить их в удобочитаемом виде.

function search_image_usage() {
    global $wpdb;
    $string_to_search = 'cdn.cloudflare.com'; // строка для поиска
    $results = [];

    // Получаем все таблицы базы данных
    $tables = $wpdb->get_results("SHOW TABLES");

    foreach ($tables as $table) {
        $table_name = array_values((array)$table)[0]; // Получаем имя таблицы

        if (strpos($table_name, 'postmeta') !== false || strpos($table_name, 'posts') !== false) {
            // Получаем колонки таблицы
            $columns = $wpdb->get_col("DESC {$table_name}");

            foreach ($columns as $column) {
                // Ищем записи, содержащие нужную строку
                $query = $wpdb->prepare("SELECT * FROM {$table_name} WHERE {$column} LIKE %s", '%'.$string_to_search.'%');
                $rows = $wpdb->get_results($query);

                if ($rows) {
                    foreach ($rows as $row) {
                        if (strpos($table_name, 'postmeta') !== false) {
                            $results[] = 'Используется в метаданных записи: ' . $row->post_id;
                        } elseif (strpos($table_name, 'posts') !== false) {
                            $results[] = 'Используется в записях: ' . $row->ID;
                        } else {
                            $results[] = 'В таблице: ' . $table_name . ' и строке ID: ' . $row->ID;
                        }
                    }
                }
            }
        }
    }

    return implode('<br>', $results); // Возвращаем результаты в виде строки
}
add_shortcode('show_image_usage', 'search_image_usage');

Инструкции по размещению кода

  1. Скопируйте приведённый выше код.
  2. Вставьте его в файл functions.php вашей темы WordPress.
  3. Используйте шорткод [show_image_usage] на странице или посте, чтобы вывести список всех записей и метаданных, где используется указанное изображение.

Заключение

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

Не стесняйтесь обращаться за дополнительной помощью или уточнениями по данному процессу — оптимизация сайта всегда является важным шагом к его успешному развитию.

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

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