Задача
Автоматически добавить на сайт WP несколько десятков/сотен статей для понижения ссылочного заспама для GGL, например, или для других целей. Статьи представлены в *.txt файлах.
Описание
На хостинге создаём отдельную папку со скриптом, там же делаем подпапку articleOk с отобранными статьями. Скрипт проходится по всем файлам в папке и добавляет их в ВП. При этом можно указать картинку/заглушку и категорию, куда лить статьи.
Пароль в скрипте — wx
Работает быстро, не очень безопасно, поэтому очень рекомендую скрипт после работы удалять или выставлять на него нулевые права (чтобы не было доступа на чтение/выполнение).
При работе есть галочка «IHC» надстройка для хостинга IHC, и возможно других, где будут проблемы с кодировкой). На Бегете всё летает без галочки.
Так же при экспорте была проблема — отсутствовали абзацы. Решил с помощью автоматического разбития текста на абзацы по признакам (в коде всё видно).
Откуда брать статьи?
Масса вариантов, скрипт писался для пачек статей от TextNet, который парсит их с вебархива. Есть фрилансеры которые занимаются тем же.
Решение
Ниже приведу готовое решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><h1>Добавляем статьи автоматически в рубрику</h1><? error_reporting(7); ini_set('display_errors','On'); require( '../wp-blog-header.php' ); if($_POST['parol']==''){ // выводим в начале настройки ?> <p>Все статьи должны быть закачены в папку <code>article</code> в виде текстовых файлов. 1 статья = 1 файл.</p> <form action="" method="post" name="form"> <table width="650" border="0" cellpadding="5" cellspacing="0"> <tr> <td><b>Пароль</b></td> <td><input name="parol" type="password" size="10" value=""></td> </tr> <tr> <td><b>ID рубрики куда импортируем</b></td> <td><input name="categ" type="text" size="10" value=""></td> </tr> <tr> <td><b>ID картинки из базы WP</b></td> <td><input name="image" type="text" size="10" value=""></td> </tr> <tr> <td><b>Название статьи берём из названия файла?</b></td> <td><input name="nazvanie" type="checkbox" value="1" checked></td> </tr> <tr> <td><b>Сервер IHC?</b></td> <td><input name="IHC" type="checkbox" value="1"></td> </tr> <tr> <td><b>Удалить из текстов фразу</b></td> <td><input name="del[]" type="text" size="20" value=""><br/><input name="del[]" type="text" size="20" value=""><br/><input name="del[]" type="text" size="20" value=""></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" style="width:400px; height:35px;font-weight:bolder; cursor:pointer;" value=" Импорт! " onclick="ss();"></td> </tr> </table> </form> <? }elseif($_POST['parol']=='wx'){ // работаем // перебираем файлы $dir='articleOk'; $skip = array('.', '..', 'index.php'); $files = scandir($dir); foreach($files as $file) { if(!in_array($file, $skip)){ echo'<br/> <b>'.$file.' </b> '; //читаем файл $str_file=file_get_contents($dir.'/'.$file); if($str_file===FALSE){ echo'Файл '.$file.' не считан!'; }else{ // удаляем из текста фразы if(count($_POST['del'])>0){ // замена $str_file=str_replace($_POST['del'],"",$str_file); } // разбираем файл и пишем в базу if($_POST['nazvanie']==1){ // название из названия файла $nazvanie=str_replace('.txt','',$file); if($_POST['IHC']==1) $nazvanie=iconv('windows-1251','UTF-8',$nazvanie); }else{ // из файла берём первую строку //echo $str_file; $abzac=strpos($str_file, PHP_EOL); if($abzac>200) $abzac=strpos($str_file, ' ',100); $nazvanie=substr($str_file,0,$abzac); //обрезаем статью $str_file=substr($str_file,$abzac); } // абзац для конструкции ааа.5 if (preg_match_all('/[а-я.]+[0-9]/i', $str_file, $found, PREG_SET_ORDER)) { foreach($found as $val){ preg_match("/([а-я.]+)([0-9]+)/", $val[0], $matches); //print_r($matches); $str_file=str_replace($matches['0'],$matches['1']."\r\n \r\n".$matches['2'],$str_file); } } // абзац для конструкции ааа.Ааа if (preg_match_all('/[а-я]+[.]+[А-Я]/i', $str_file, $found, PREG_SET_ORDER)) { foreach($found as $val){ preg_match("/([а-я.]+)([А-Я]+)/", $val[0], $matches); //print_r($matches); $str_file=str_replace($matches['0'],$matches['1']."\r\n \r\n".$matches['2'],$str_file); } } // абзац для конструкции аааАаа if (preg_match_all('/[а-я]{3,}[А-Я]{1}/u', $str_file, $found, PREG_SET_ORDER)) { foreach($found as $val){ preg_match("/([а-я]{3,})([А-Я]{1})/u", $val[0], $matches); $str_file=str_replace($matches['0'],$matches['1']."\r\n \r\n".$matches['2'],$str_file); } } // абзац для конструкции ааа2 if (preg_match_all('/[а-я][0-9]/u', $str_file, $found, PREG_SET_ORDER)) { foreach($found as $val){ preg_match("/([а-я])([0-9])/u", $val[0], $matches); $str_file=str_replace($matches['0'],$matches['1']."\r\n \r\n".$matches['2'],$str_file); } } //echo $nazvanie.'<hr/>'.$str_file.''; /////////////////////////////////////////////////////////////// // перевод строки меняем на двойной? $str_file=str_replace(PHP_EOL,"\r\n \r\n",$str_file); // Создаем массив данных новой записи $post_data = array( 'post_title' => trim($nazvanie), 'post_content' => trim($str_file), 'post_status' => 'publish', 'post_category' => array($_POST['categ']), 'post_type' => 'post', ); // print_r($post_data); die(); // Вставляем запись в базу данных $post_id = wp_insert_post( $post_data ); echo "Добавлено - $post_id"; if($_POST['image']!==''){ set_post_thumbnail($post_id, $_POST['image']); echo' - Миниатюру добавили'; } $i++; //die(); } } } echo"<hr/> Добавлено $i записей"; } ?><hr/><hr/><hr/><b> <a href="">Начать заново</a></b> <br/><br/><br/> <p style="font-size:10px;">2022 (c) <a href="https://wx1.ru/" target="blank" style="color:black;text-decoration:none;">Wx1000</a></p> |