0

WordPress マルチサイト インストール、最新バージョンがあります。

他のすべてのサイトのテンプレートとして機能する 1 つのサイトがあります。すべてのページがコピーされるため、新しいサイトが追加されても問題ありません (WPMU Dev Copier プラグイン)。

ただし、既に作成されている古いサイトについては、すべてのサイトのコンテンツ ページを「テンプレート」サイトから置き換えたいと考えています。これには、新しく作成されたサイトだけでなく、よりシンプルに保つために古いサイトも含めることができます.

PHP を使用してテンプレート サイト以外のすべてのサイトをループし、ページの post_name (スラッグ) が配列にある場合、そのページのコンテンツをテンプレート サイトから各サイトにコピーする簡単な方法はありますか? ページを削除して再作成するつもりはありませんが、post_content を置き換えたいと考えています。

たとえば、私が見落としたプラグインが存在しない限り、サイトのページを返すことができる隠し関数を探します。そうでなければ、私はコーディングしていると思います;)

ありがとうございました。

4

1 に答える 1

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;

于 2014-12-16T00:29:40.370 に答える