Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > WordPress и другие CMS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2019, 21:36   #1
ARXangel
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 24
По умолчанию

Доброго времени суток!
Кто-нибудь сталкивался с переносом постов с Ucoz на Wordpress.

Вопрос как перенести новости с Ucoz на Wordpress. Руками не вариант сейчас постов почти 12000

В сети нашел скрипт на php.
Код:
function getBlog()
{
	$data = file_get_contents('ПУТЬ К ФАЙЛУ blog.txt');

	$data = preg_split('/[^\\\]\n/m',$data);
	$n = 0;
	foreach ($data as $post)
	{
		if (!isset($post[1]))
			break;
		$n++;
		
		$post = explode('|',$post);	
				
		switch ($post[1])
		{
			case 1:					
				$cat_id = 9;
				break;
			case 2:					
				$cat_id = 4;
				break;
			default:
				$cat_id = 2;		// задаём категорию по-умолчанию
		}
		
			if (strlen($post[3]) == 1)
				$post[3] = '0'.$post[3];
			if (strlen($post[4]) == 1)
				$post[4] = '0'.$post[4];
			$source = array(
			  'post_title' => $post[11],              // заголовок материала.
			  'post_content'  => $post[13],           // message
			  'post_status'   => 'publish',           // статус (опубликовано)
			  'post_author'   => 1,                   // id автора
			  'post_category' => array($cat_id),      // массив id категорий, у нас категория только одна
			  'post_date' => $post[2].'-'.$post[3].'-'.$post[4],   // дата публикации
			  'post_type' => 'blog',                  // post type, у меня создан отдельный blog, у вас же скорее всего это значение будет post
			);
			$post_id = wp_insert_post($source);          // функция добавления записи

			update_post_meta( $post_id, 'post_views_count', $post[16] );        // обновляем мета информацию о записях, вам это может быть не нужно  
			update_post_meta( $post_id, '_aioseop_keywords', $post[21] ); 
			update_post_meta( $post_id, '_aioseop_description', $post[22] ); 	
	}
	echo $n;
}
С автором связаться не получилось пост был 2014 году.
Я с Wordpress не работал и не понимаю как этот скрипт запустить

Значения в самом файле, который и нужно обработать, разделяются |. Смысл понятен. Нужно перебрать весь файл, и значение распихать в поля Wordpress.
Вопрос: как запустить свой скрипт на Wordpress.
Если вы хотите защитить вашу систему от «дурака», то всегда найдется один такой, изобретательность которого вы и предвидеть не могли.
ARXangel вне форума Ответить с цитированием
Старый 13.09.2019, 22:06   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Заплатите во фрилансе
Alar вне форума Ответить с цитированием
Старый 13.09.2019, 22:26   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

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

Можно добавлять в БД напрямую (что не очень желательно) или используя API WordPress через самописный плагин (да, он будет одноразовый, но за то с использованием API движка).
Необходимые знания по WordPress Вы можете почерпнуть из документации для разработчиков или сайтов наподобие WP-Kama.

Как это реализовать в деталях рассказывать долго, т.к. задача слишком объёмная для одного поста и возможно даже одной темы.

Если при самостоятельной реализации возникнут конкретные вопросы, задавайте их на форуме. Если не я, то коллеги ответят.
Если же самостоятельно разобраться не получится или просто нет на это времени, тогда проще обратиться к фрилансерам. Они хоть и не бесплатно, но сделают за Вас .
Streletz вне форума Ответить с цитированием
Старый 14.09.2019, 00:24   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Streletz, да он даже и не пытался переносить вручную, если бы это делал, то и понял как это автоматизировать.

Сначала бы просто добавлял посты через админку, потом обленился стал бы добавлять в PHPmyadnin, потом опять обленился, сделал бы SQL скрипт, потом обленился сделал бы парсер, после чего было бы не сложно сдружить парсер и SQL скрипт.

но нет, качает какое-то барахло, типа это его наработки, где вообще не пришей никчему от чего

Цитата:
update_post_meta( $post_id, 'post_views_count', $post[16] ); // обновляем мета информацию о записях, вам это может быть не нужно
например снизу смотрю. зачем вам обновлять мету


хорошо сверху
Цитата:
'/[^\\\]\n/m'
Что это такое? регулярка, ну удачи с регулярками в PHP ))

А всего то нужно перекинуть в базу URL, TITLE и CONTEN

Это можно несколькими SQL запросами сделать.
Из базы источника SELECT, потом в базу направление - INSERT

причем не долго думая в нотепад++ автозаменой заменить SELECT на INSERT

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

топикстартер, ты хоть раз бекап базы делал? в глаза видел как она выглядит в SQL файлике? )))
Alar вне форума Ответить с цитированием
Старый 14.09.2019, 00:43   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
Что это такое?
большая часть кода это парсинг файла с экспортированными постами, видимо в каком-то юкозовском велосипедном формате.

Цитата:
Сообщение от Alar Посмотреть сообщение
ну удачи с регулярками в PHP
какая разница какой язык?

Цитата:
Сообщение от Alar Посмотреть сообщение
Из базы источника SELECT,
а юкоз дает к ней доступ?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.09.2019, 01:46   #6
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
какая разница какой язык?
Ты хочешь мне объяснить что этот PHP скрипт делает этой регуляркой?

Цитата:
а юкоз дает к ней доступ?
а как они подключают сайт? как делают бекапы?
нельзя забрать базу вообще никак?
тогда тупо через GET скраббить, и потом через Insert влить в вордпресс базу. там если что ещё есть вариант через XML, и ещё какие-то варианты по моему были. XML, наверное, вообще самое простое, можно даже никуда дальше админки вордпресса не ходить.

Цитата:
Сообщение от ARXangel Посмотреть сообщение
С автором связаться не получилось пост был 2014 году.
Вероятно, карьера программиста на этом скрипте и закончилась ))
Alar вне форума Ответить с цитированием
Старый 14.09.2019, 11:26   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
а как они подключают сайт? как делают бекапы?
так не обязательно же напрямую БД пользователям давать.
Экспортируют в свой формат (который тут парсится), импортируют из него же.

Ну может конечно они уже дают и другие варианты, хотя бы XML/JSON, которых там либо не было в 2014, либо автор о них не знал.

Цитата:
Сообщение от Alar Посмотреть сообщение
Ты хочешь мне объяснить что этот PHP скрипт делает этой регуляркой?
Он на строки делит текст, когда встречаются два таких символа вместе:
1. любой символ кроме \ (видимо он где-то используется для экранирования, типа как в терминале перенос длинных команд). Целых три \\\ там написано потому что надо экранировать \ в регулярках (как и в большинстве языков).
2. перевод строки (\n):
Код:
$ php -a
Interactive mode enabled

php > $data = "lalala|\nlalala";
php > echo $data;
lalala|
lalala
php > $lines = preg_split('/[^\\\]\n/m', $data);
php > var_dump($lines);
php shell code:1:
array(2) {
  [0] =>
  string(6) "lalala"
  [1] =>
  string(6) "lalala"
}
Автор пишет, что надо было разделять по |\n (| + перевод строки).
Цитата:
Рассмотрим файл blog.txt, из названия видно что это данные из модуля блог.

Во всём бекапе 1 строка = 1 запись, поля каждой записи разделены символом |. Вероятно если этот символ встречается в полях, он как-то экранируется, но я не проверял. Встретите такую проблему — вот и проверите. Соответственно нам нужно построчно обрабатывать каждый файл, добавляя записи в WP.
UPD: а, не, по | это другое, я не так понял эту цитату. Там что-то типа CSV с "|" вместо ",".
Тогда хз зачем эта регулярка, может быть там виндовские переводы строк (\r\n), но тогда и регулярка не нужна (как впрочем и для |\n), хватило бы и функции explode.
Смысл в регулярках для разделения файлов на строки может быть когда там возможны разные виды переводов строк (виндовские, линуксовские), тогда в регулярке было бы что-то типа \r?\n, но тут не такая регулярка.
Может быть автор хотел написать регулярку, которая находит переводы строк перед которыми нет экранирующего \ (то есть один символ, а не два как тут), но ошибся и не заметил ошибки (может быть она не влияла на результат, например, если там в конце всегда какой-нибудь лишний пробел или не используемое поле).
Цитата:
Сообщение от Alar Посмотреть сообщение
Вероятно, карьера программиста на этом скрипте и закончилась ))
Нет.
Цитата:

Здравствуйте! Меня зовут Максим. Проживаю я в городе на Неве, Санкт-Петербурге.

Я закончил магистратуру в 2017 году в ИТМО по направлению «Прикладная информатика» на кафедре Компьютерной фотоники и видеоинформатики. Но разработкой я заинтересовался сильно ранее, в далёком 2009 году. В 2010 завёл этот блог и с тех пор периодически сюда пишу. Тематика блога соответствует технической части моих интересов. Правда, с тех пор как мне появилось о чём писать более-менее значимом и сложном, у меня исчезло время на это, поэтому дельных записей по разработке не так много. Старые же записи советую не смотреть.

В 2011 году я начал заниматься фрилансом в области веб-разработки. С тех пор сделал кучу разных проектов, приобрёл неоценимый опыт и большое количество знаний. Подробнее об используемых технологиях и навыках вы можете прочитать на этой странице, а найти мои контактные данные на этой. Некоторой частью этого опыта я стараюсь делиться в блоге, но чем больше опыта — тем меньше времени, чтобы о нём рассказать. Отдельно можно посмотреть на мои проекты, сделанные самостоятельно и не на заказ.

Опыт работы:

С 2011 года я начал брать частные заказы. Сначала это была просто вёрстка, потом PHP разработка на различных CMS и без них, немного фронтенда;
С осени 2014 года по январь 2016 я работал PHP разработчиком в студии Le-Dantu: NetCat, Bitrix и свои разработки;
После чего я перешёл на Java и с марта 2016 стал работать как Java разработчик в компании Epam Systems, где работал до осени 2017: Java, Spring и смежный стек технологий;
Затем, с ноября 2017 я перешёл во ВКонтакте как backend разработчик и работаю тем сейчас.

Если у вас есть какая-либо идея по поводу моего блога, предложение или вы просто хотите что-то спросить — обращайтесь. Мои контакты тут.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 14.09.2019 в 12:13.
Alex11223 вне форума Ответить с цитированием
Старый 14.09.2019, 13:47   #8
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
с ноября 2017 я перешёл во ВКонтакте как backend
Поржал, никогда мне не работать в крупных компаниях, потому что не пишу такие скрипты )))


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Может быть автор хотел
Накопировал скриптов из разных мест, и подогнал под малые данные. В итоге всё как везде, куча не рабочего мусора в кодах или работающего но не так как надо, бсод не вылетает и ладно )


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Тогда хз зачем эта регулярка
Смотри в чём главная проблема, на топикстартера походе уже забить, с ним всё понятно, раз тут не отписывается, чуть подрастёт и тоже пойдет во вконтакте работать - порнуху допубертатного возраста модерировать )

Так вот главная проблема в чём - нужно провести склейку старого и нового сайта.
Страницы должны быть 1 к 1. т.е. не нужно переводить никаких строк и т.д. и даже кое-где появившийся лишний энтер разобьёт весь текст и поисковики вряд ли склеят.

Потому, при таком переносе - переносится только дизайн, старые страницы проще сграбить в html 1 к 1 и на пол года минимум сделать склейку через .htaccess редиректом в котором вы полностью уверены )), опять же не известно как пойдёт ) Но, при желании, можно извратиться и в базу всё затолкать и даже склеить, но вряд ли это топикстартеру нужно, или он понимает зачем ему это нужно, не говоря о том, что он сможет это сделать сам )

Если же надо сграббить скажем так чужие сайты, или сделать несколько вариантов своего, доры например, а лет 10 назад и раньше только этим и занимались все. То зачем тебе скрипт граббинга через PHP, особенно с непонятными регулярками, ты просто настраиваешь граббинг по шаблону, делая возможность менять шаблон под разные сайты, на сколько я понимаю, но ещё ни разу не юзал, для этого есть куча готовых инструментов в питоне. Так вот в итоге инструмент вебмастера выглядит так. Гетт граббер и SQL или XML генератор, допустим под вордпресс.
Alar вне форума Ответить с цитированием
Старый 14.09.2019, 13:57   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
ты просто настраиваешь граббинг
так тут не надо грабить, юкоз уже всё сграбил и отдал в чем-то типа CSV https://en.wikipedia.org/wiki/Comma-separated_values файла:
Код:
заголовок1|текст1|дата1|категория|и т.д.
заголовок2|текст2|дата2|категория|и т.д.
То есть скрипт разбивает этот файл на посты (строки), потом из каждого поста достает нужные поля и импортирует в вордпресс.

Если предположить, что это единственный вариант экспорта предоставляемый юкозом, то это оптимальный подход, намного проще и надежнее, чем самому грабить с сайта.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.09.2019, 13:59   #10
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
CSV
Ну вот узнали как он хранит данные. С этого топикстартер должен был начинать тему.

Что бы я сделал.

Сделал бы переделку в XML файл wordpress формата.
в начале строки вставить открывающий тег, слеш теги, первый слеш - один набор тегов, второй слеш другой набор тегов. в конце строги закрывающийся слеш.

в итоге был бы цикл по строкам - записям базы, и цикл по стринговому массиву в котором бы хранился набор тегов.

Добавлено - а в SQL формат структуру, актуальной вордпресс базы, а она там менялась и не раз. из XML переведёт сам вордпресс.

Если бы эти гении из юкоза сделали бы не одинакоый разделитель. а хотя бы так |1| |2| |3| или так |title| |Content| |Meta|, можно было бы в нотепаде вручную за 10 минут перелопатить в тру XML формат, без программирования и подсчётов разделителей.

И только понимая всё это можно делать сайты, чтобы ругать криворукость юкозовцев, свою неопытность что вляпался туда, а не красногласить над левым скриптом )) мечтая работать во вконтакте ))

Последний раз редактировалось Alar; 14.09.2019 в 14:07. Причина: Добавлено
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[wordpress] Парсинг отзывов с booking.com и oteleus.ru в сайт на wordpress Atomnsq Фриланс 3 26.08.2019 22:39
Перенос контента сайта с Webasyst на Wordpress bigbox Фриланс 1 23.04.2013 15:15
ucoz wordPress joomla Вду ruster05 WordPress и другие CMS 0 16.03.2011 13:21
Перенос с ucoz velesf Фриланс 1 14.05.2009 01:28