如何从另一个站点(在同一网络上)替换一个WordPress多站点站点中的所有页面

时间:2014-12-12 19:17:46

标签: php wordpress multisite

我有一个WordPress多站点安装,最新版本。

我有一个网站充当所有其他网站的模板。添加新站点时没有问题,因为所有页面都被复制(WPMU Dev Copier插件)。

但是,对于已经创建的旧网站,我想从"模板"替换所有网站的内容页面。现场。这可以包括新创建的站点以及旧站点,以使其更简单。

使用PHP的简单方法是我可以遍历模板站点以外的所有站点,如果页面的post_name(slug)在数组中,则将该页面的内容从模板站点复制到每个站点现场?我真的不想删除页面并重新创建它,但想要替换post_content。

查找可以返回网站页面的任何隐藏功能,例如,除非存在我忽略的插件。否则我想我是编码;)

谢谢。

1 个答案:

答案 0 :(得分: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;