Как заменить все страницы в одном многосайтовом сайте WordPress с другого сайта (в той же сети)

У меня многосайтовая установка WordPress, последняя версия.

У меня есть один сайт, который выступает в качестве шаблона для всех других сайтов. Нет проблем при добавлении нового сайта, так как все страницы копируются (плагин WPMU Dev Copier).

Тем не менее, для старых сайтов, уже созданных, я хотел бы заменить страницы контента для всех сайтов с сайта-шаблона. Это может включать как новые сайты, так и старые, чтобы упростить их.

Есть ли простой способ с помощью PHP, который я могу перебрать на всех сайтах, кроме сайта шаблона, и если post_name (slug) страницы находится в массиве, скопируйте содержимое этой страницы с сайта шаблона на каждый сайт? Я не очень хочу удалить страницу и заново создать ее, но хотел бы заменить post_content.

Поиск любых скрытых функций, которые могут возвращать страницы для сайта, например, если не существует плагина, который я пропустил. В противном случае, я думаю, я кодирую;)

Спасибо.

0

Решение

Таким образом, это необработанная версия (еще не оптимизированная), которая копируется с текущего блога (сайта) на все остальные блоги (сайты), кроме # 1. Там, где существует post_name, контент копируется, в противном случае предполагается новая страница, и она создается. Владение новой страницей передается в данный момент зарегистрированному пользователю.

Необходимо изменить, чтобы справиться с большими установками, как все в один момент, с некоторым подкачкой и т. Д.

Подходит для моих требований, возможно, можно поиграть с другими ситуациями.
Так что делиться в случае использования другим.

$id = get_current_blog_id();
$sql = "SELECT * FROM ".$wpdb->base_prefix."blogs WHERE blog_id != %d AND blog_id > 1";
$blogs = $wpdb->get_results($wpdb->prepare($sql, $id));
foreach ($blogs as $blog):
echo $blog->path.' ('.$blog->blog_id.')<br />';
$blog_id = ($id == 1) ? '' : $id.'_';
$sql = "SELECT * FROM ".$wpdb->base_prefix.$blog_id."posts WHERE post_type='page' and post_status='publish'";
$pages = $wpdb->get_results($sql);
foreach ($pages as $page):
$sql = "SELECT ID FROM ".$wpdb->base_prefix.$blog->blog_id."_posts WHERE post_name = %s AND post_status = 'publish'";
$target = $wpdb->get_row($wpdb->prepare($sql, $page->post_name));
if ($target):
$sql = "UPDATE ".$wpdb->base_prefix.$blog->blog_id."_posts SET post_content = %s WHERE post_type='page' AND post_status = 'publish' AND post_name = %s";
$wpdb->query($wpdb->prepare($sql, $page->post_content, $page->post_name));
else:
$post_author = $current_user->ID;
$post_content = $page->post_content;
$post_title = $page->post_title;
$comment_status = 'closed';
$post_name = $page->post_name;
$post_type = 'page';
$insert = $wpdb->prepare( "( %d, %s, %s, %s, %s, %s)", $post_author, $post_content, $post_title, $comment_status, $post_name, $post_type );
$wpdb->query( "INSERT INTO ".$wpdb->base_prefix.$blog->blog_id."_posts ( post_author, post_content, post_title, comment_status, post_name, post_type ) VALUES " . $insert );
endif;
endforeach;
endforeach;

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]