Скрипт поиска слов в базе данных для WordPress

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
Загрузка...

Изначально данный скрипт я хотел подключить для своей статьи «Перенос базы данных WordPress на новый домен«, но так как информации на той странице и так очень много, я решил оставить его здесь.

Что делает скрипт? При указании любой фразы в саму функцию, скрипт выполняет поиск по всей базе данных , и показывает результат в виде таблицы. И так начнём. Создадим в корне сайта файл search.php, и разместим в нём следующий код:

function get_search_words($word){

  //если это отдельный файл, подключаем функции Wp

  if(!isset($wpdb))include $_SERVER['DOCUMENT_ROOT'].'/wp-load.php';

  global $wpdb;
  
  $array=array();
  
  //sql запрос для поиск всех таблиц в БД
   
  $sql="show tables ";
  
  //Выполняем запрос и заполняем данные в массив

  $res=$wpdb->get_results($sql); 
  
  //Если что-то пошло ни так, показываем ошибку
  
  if( ! empty($wpdb->error) ) wp_die( $wpdb->error );
  
    //Проходим по каждой таблице

    foreach($res as $table){
    
      //Получаем название ключа

      $bd_name="Tables_in_".$wpdb->dbuser;
      
      //Заносим в переменную название таблицы
      
      $table_name=$table->$bd_name;

      //Получаем все поля(ячейки) данной таблицы
      
      $fields=$wpdb->get_results("DESCRIBE `$table_name`");
      
      //пробегаемся по всем ячейкам и создаём массив для будущего поискового запроса
      
      $sq=array();
      
        foreach($fields as $num=>$field){
        
          $sq[]=" `$field->Field` like '%$word%'";
        
        }
      
      //Соединяем все поля с помощью оператора OR
      
      $like=implode(' OR ',$sq);
      
      //Выполянем поиск по каждой ячейки в таблице
      
        if(!empty($like)){
        
          //echo "select count(*) as count from $table_name where $like \r\n<br>";
      
          $finish=$wpdb->get_results("select count(*) as count from $table_name where $like");

          //Отсеиваем таблицы где нет совпадений
      
            if($finish[0]->count>0){
            
              //Собираем массив, чтобы его отсортировать по названию таблицы
                      
              $array[$table_name]=$finish[0]->count;
      
            }
      
        }

    }
    
    //Сортируем массив

    usort($array);
    
    //Показываем данные в виде таблицы
      
    echo "<table cellpadding='5' cellspacing='0' width='300px' border='0'";
    
      foreach($array as $table=>$count){
      
        echo "<tr><td style='border:1px solid #ccc'>$table</td><td style='border:1px solid #ccc'>$count</td></tr>";
      }
    
    echo "</table>";

}

//Включаем функцию поиска,вместо "Старый URL" прописываем домен без https://

get_search_words('Старый URL');

Когда скрипт выполнит свою работу, на экране отобразится следующая картина. С левой стороны таблица в которой найдено совпадение, с правой стороны кол-во совпадений.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*