Задать вопрос
Ivan_Ivanv
@Ivan_Ivanv

Как в wordpress в базе данных (phpMyAdmin) сделать 4000 копий одной страницы?

Есть сайт на Wordpress. Возникла необходимость сделать 2771 копий всего лишь 1 страницы в базе данных phpmyadmin - в разделе wp_posts.

Чтоб каждая копия отличалась в столбцах:
post_contest , post_title, также ссылки на новые скопированные страницы должны "рабочими-не битыми" быть пронумерованы от 1551 до 4322.

в таком виде:
https://site.ru/1551-2
https://site.ru/1552-2
https://site.ru/1553-2
...
https://site.ru/4320-2
https://site.ru/4321-2
https://site.ru/4322-2

Пока что думаю с помощью экспорта\редактированием\импортом, но как отредактировать такую кучу страниц ручками не знаю.

см. скриншот, выделил страницу которую таким образом хочу раскопировать.
5f999955c5fee784961705.jpeg
  • Вопрос задан
  • 43 просмотра
Подписаться 1 Средний Комментировать
Ответ пользователя Артем Золин К ответам на вопрос (2)
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
На счет базы не подскажу, но вы можете воспользоваться нативными функциями get_posts() и wp_insert_post()

// получаем данные исходного поста по слагу
$post_slug = '1543';
$args = array( 'name' => $post_slug, 'post_type' => 'post', 'post_status' => 'publish, draft, future', 'numberposts' => 1 );
$post = get_posts($args)[0];

for ( $i = 1; $i < 2771; $i++ ) {
	// Создаем массив данных новой записи
	$post_data = array(
		'ID'		=> $post->ID++,        
		'post_title'	=> $post->post_title,
		'post_name'		=> $post_slug . '-' . $i,  
		'post_date'		=> $post->post_date,
		'post_date_gmt'	=> $post->post_date_gmt,    
		'post_content'	=> $post->post_content,
		'post_status'	=> 'publish',
		'post_type'		=> 'post',
		'post_author'	=> 1,
	);

	// Вставляем запись в базу
	$post_id = wp_insert_post( wp_slash( $post_data ) );

	// пишем ошибку/успех
	if( is_wp_error( $post_id ) ) {
		var_dump( 'Ошибка инсерта поста ' . $post->post_title . ' таксономии category: ' . $post_id->get_error_message() );
	} else {
		var_dump( 'Пост ' . $post->post_title . ' таксономии category опубликован удачно!' );
		//wp_set_object_terms( $post_id, 'cat_id', 'category' ); // если нужно назначить категорию, заменить cat_id
	}
}


Поменяйте слаги на нужные, я так и на понял какие вам нужны
Ответ написан
Комментировать