【2025年最新版】WordPressでページを複製する方法

【2025年最新版】WordPressでページを複製する方法

WordPressでWebサイトを運営していると、投稿や固定ページの複製が必要になるシーンは意外と多いものです。テンプレート的に使いたいレイアウトがあったり、似たような内容の記事を効率よく作りたかったり…。そんなときに複製テクニックを知っておくと、Webサイト運営の効率がグンと上がります。

本記事では、既存のコンテンツをベースに新しいページや投稿を手早く作成できる、プラグインを使った方法と手動での複製テクニックをくわしく解説します。

実際の運用シーンに沿った活用例も紹介するので、WordPressサイト運営がもっとラクになること間違いありません!

プラグインを使ってWordPressで投稿や固定ページを複製する方法

WordPressの投稿や固定ページを手動でコピペをするというのは、あまり効率的な方法ではありません。確かにブロックエディターには「すべてのブロックをコピー」機能がありますが、これだけでは完全な複製には不十分。

手動コピーだとテキストコンテンツしか複製されず、テンプレート部分、画像、SEO要素(メタディスクリプションやタイトルタグなど)は別々にコピーしなければいけません。特に複数の投稿や固定ページ、カスタム投稿タイプをクローンしたい場合は、この作業には非常に時間がかかるわけです。

そこで便利なのが複製用プラグイン!このツールを使えば複製プロセスが格段に簡単になり、人的ミスも減らせます。

Duplicate Pageプラグインで投稿や固定ページを複製する方法は次の通り。

  1. まずはWordPressプラグインディレクトリから「Duplicate Page」をインストールして有効化します。プラグインのインストール方法には、他にもFTPクライアントを使う方法や、WordPress管理パネルから手動でプラグインファイルをアップロードする方法もありますが、ディレクトリからの導入が最も簡単です。
  1. 「設定 → Duplicate Page」に移動して、プラグインの設定を行います。このチュートリアルでは、クラシックエディターとGutenbergの両方で使えるように設定しておきましょう。このプラグインは複製されたコンテンツをすべて下書き状態で作成し、複製プロセスが完了すると投稿リスト画面に自動的にリダイレクトしてくれる便利な仕様です。
  1. WordPress管理パネルから「投稿 → すべての投稿」(固定ページなら「固定ページ」)に移動すると、各コンテンツの下に「Duplicate This」というボタンが表示されています。このボタンをクリックするだけで、選んだ投稿や固定ページの完全なレプリカが新しい下書きとして作成されます。
投稿複製

Duplicate Pageはフリーミアム形式のプラグインであり、Pro版へのアップグレードも検討する価値はあります。Webサイト1つあたり15ドルのライセンスを購入すると、ユーザーロールに基づいたプラグインアクセス制限、複製した固定ページや投稿の保存場所変更オプション、複製したエントリにデフォルトのプレフィックスやサフィックスの設定といった便利な機能が使えるようになります。

もしDuplicate Pageが合わないと感じたら、以下のような他の人気プラグインも試してみる価値ありです。

  • Yoast Duplicate Post:有名なSEOプラグイン開発チームによる複製プラグイン。一括操作機能を使って複数のエントリを一度にクローンできる優れもの。
  • Post Duplicator:カスタム分類やカスタムフィールドも含めてカスタム投稿タイプをきっちりサポート。規模やジャンルを問わず、あらゆるWordPressサイトで活躍します。
  • Duplicate PP:このプラグインの魅力は、管理パネル(バックエンド)からはもちろん、公開Webサイト上(フロントエンド)の個別投稿ページからも直接コンテンツを複製できるところです。
  • Duplicate Post:投稿クローン作成機能に加えて、複製したコンテンツを数クリックで見つけて削除できる機能も搭載。管理のしやすさが魅力です。

ポイント

WordPressで新しい投稿や固定ページを追加する適切な方法を理解して、コンテンツ公開の作業フローを効率化しましょう。

手動でWordPressの投稿や固定ページを複製する方法

プラグインを使わなくても、functions.phpファイルを少し修正するだけで投稿や固定ページに複製機能を追加できるのをご存じでしょうか。このファイルはWordPressサイトの中核となるwp-includesフォルダに格納されています。

functions.phpファイルを編集するには、レンタルサーバーのファイルマネージャーを使う、FileZillaなどのFTPクライアントで接続する、HTMLコードエディターを使用する、WordPress組み込みのエディターを利用するといった4つの方法があります。

FTPクライアントで編集する場合は、まずFTPアカウントを作成してサーバーに接続する必要があります。FileZillaの接続設定は初心者でも比較的使いやすいFTPクライアントなので、こちらでの設定がおすすめです。

一方、WordPress組み込みのエディターを使うなら、管理パネルの「外観 → テーマファイルエディター」から簡単にアクセスできます。

コーディングに慣れている方なら、HTMLエディターが最も作業しやすいかもしれません。多くのコードエディターはスペルチェック機能やエラー検出機能を備えているので、コードの機能性や整理が保証されます。

重要!WordPressのファイルを編集する前に、必ずWebサイト全体をバックアップしておきましょう。

本チュートリアルでは、Hostingerのファイルマネージャーを使ってfunctions.phpファイルを設定する方法を紹介します。 まずはhPanelにログインして「ファイル → ファイルマネージャー」へ進み、ファイル管理ツールを開きます。「ドメイン名のファイルにアクセス」を選択してWordPressサイトのファイルにアクセス。

public_html → wp-includesと進んでfunctions.phpファイルを探します。ファイルを右クリックして「編集」を選ぶか、ダブルクリックして開きます。

以下のコードスニペットをfunctions.phpファイルの最後に貼り付けてください。

/*
* Function for post duplication. Dups appear as drafts. User is redirected to the edit screen
*/
function rd_duplicate_post_as_draft(){
global $wpdb;
if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) {
wp_die('No post to duplicate has been supplied!');
}

/*
* Nonce verification
*/
if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) )
return;

/*
* get the original post id
*/
$post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
/*
* and all the original post data then
*/
$post = get_post( $post_id );

/*
* if you don't want current user to be the new post author,
* then change next couple of lines to this: $new_post_author = $post->post_author;
*/
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;

/*
* if post data exists, create the post duplicate
*/
if (isset( $post ) && $post != null) {

/*
* new post data array
*/
$args = array(
'comment_status' => $post->comment_status,
'ping_status' => $post->ping_status,
'post_author' => $new_post_author,
'post_content' => $post->post_content,
'post_excerpt' => $post->post_excerpt,
'post_name' => $post->post_name,
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => 'draft',
'post_title' => $post->post_title,
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order
);

/*
* insert the post by wp_insert_post() function
*/
$new_post_id = wp_insert_post( $args );

/*
* get all current post terms ad set them to the new post draft
*/
$taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag");
foreach ($taxonomies as $taxonomy) {
$post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
}

/*
* duplicate all post meta just in two SQL queries
*/
$post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
if (count($post_meta_infos)!=0) {
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
foreach ($post_meta_infos as $meta_info) {
$meta_key = $meta_info->meta_key;
if( $meta_key == '_wp_old_slug' ) continue;
$meta_value = addslashes($meta_info->meta_value);
$sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'";
}
$sql_query.= implode(" UNION ALL ", $sql_query_sel);
$wpdb->query($sql_query);
}


/*
* finally, redirect to the edit post screen for the new draft
*/
wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) );
exit;
} else {
wp_die('Post creation failed, could not find original post: ' . $post_id);
}
}
add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' );

/*
* Add the duplicate link to action list for post_row_actions
*/
function rd_duplicate_post_link( $actions, $post ) {
if (current_user_can('edit_posts')) {
$actions['duplicate'] = '<a href="' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate</a>';
}
return $actions;
}

add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
コード提供者:Misha Rudrastyh

上記のカスタムコードを追加すると、投稿一覧に複製リンクが表示されるようになります。うまくいけば各投稿の下に「Duplicate」リンクが表示され、クリックするだけでエントリーが新しい下書きとしてコピーされます。

上記のコードは投稿にのみ複製機能を追加します。固定ページセクションにも同じ機能を追加したい場合は、コードの最後の行を以下のように置き換えるだけです。

add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);

同様に、リンクをクリックするとWordPressページを新しい下書きとして複製できます。

WordPressで投稿や固定ページを複製するメリット

WordPressで投稿や固定ページを複製するメリットはたくさんあります。特によくある理由をいくつか見てみましょう。

  • A/Bテストが簡単に:一から新しいページを作り直すのではなく、すでにあるページを複製して微調整を加えるだけでOK。こうすれば比較テストが素早く簡単にできます。
  • デザイン作業の効率アップ:新しいサイトを構築するとき、複製機能を使えば同じような形式のページを何度も作る手間が省けます。Yoast Duplicate Postなどのプラグインを使えば、さらに作業がラクになるでしょう。
  • ページデザインの一貫性を保つ:既存ページを複製すれば、フォーマット、スタイル、レイアウトの一貫性を簡単に維持できます。特にカスタムページテンプレートを使っている場合はすごく便利で、デザインのバラつきを防げます。
  • テスト環境として活用:サイト全体のテスト用にステージングサイトを作るほどでもない場合、複製した投稿や固定ページを使って小規模な実験やテストができます。
  • 多言語コンテンツの基盤作り:多言語サイトを運営している場合、ページの複製は翻訳作業の出発点として最適。元のデザインと構造はそのままに、テキスト部分だけを別の言語に変更できます。

投稿や固定ページの複製は便利な機能ですが、そのまま公開すると同一コンテンツが複数存在することになり、SEO的には良くありません。検索エンジンは最初に公開されたページを正規バージョンとみなし、コピーページは頻繁にクロールしなくなる可能性があります。

この問題を解決するには、検索エンジンに優先させたいページに正規タグ(canonical URL)を設定しましょう。多くのSEOプラグイン でこの設定が可能です。

HostingerのBusinessプラン以上を利用している方は、内蔵のステージングツールを活用できます。A/Bテスト用に投稿や固定ページを複製し、良い結果が出たものだけを本番サイトに反映させれば、重複コンテンツ問題を気にする必要もありません。

まとめ

デザイン作業の効率化であれ、新しいコンテンツアイデアの実験であれ、WordPressの複製機能は非常に役立つツールです。

本記事では、WordPressでページを複製する2つの主要な方法を紹介しました。

  • WordPress複製プラグインを使う方法:初心者にもおすすめの簡単な方法で、特に多数のページを複製する場合に便利です。
  • functions.phpファイルにカスタムコードを追加する方法:管理画面にアクセスできない状況や、複製機能をより細かくカスタマイズしたい場合におすすめです。

この記事が、WordPressでページを複製する効率的な方法を理解する助けになれば幸いです。他にも質問があれば、ぜひコメント欄でお聞かせください!

WordPressでページを複製する方法に関するよくある質問

本セクションでは、WordPressでページを複製する方法についてよく寄せられる質問を取り上げています。

WordPressで投稿や固定ページを複製することはできますか?

もちろんできます!複製方法は大きく分けて3つあり、ページコンテンツを手動でコピペする方法、複製専用プラグインを使う方法、そしてサイトのfunctions.phpファイルにカスタムコードを追加する方法です。自分の技術レベルとニーズに合った方法を選びましょう。

WordPressで固定ページや投稿を複製するメリットは何ですか?

複製機能を使うメリットはたくさんあります。A/Bテストが簡単に実施できる点、サイト構築作業が大幅に効率化される点、サイト全体で一貫したデザイン・レイアウトが維持しやすい点などが挙げられます。また、多言語サイト運営の基盤として活用したり、簡易的なテスト環境として使ったりすることも可能です。

WordPressで固定ページや投稿を複製するとSEO面で問題は発生しますか?

複製したページをそのまま公開すると、同一コンテンツが複数のURLで存在することになり、SEO面で問題が生じる可能性があります。検索エンジンは通常、最初に公開されたページを正規バージョンとして優先し、コピーページのクロール頻度は下がります。この問題を解決するには、SEOプラグインを使って正規タグ(canonical URL)を適切に設定したり、複製後は必ずコンテンツを十分に差別化したりする方法が効果的です。A/Bテストなどの目的なら、ステージングサイトを活用してSEO問題を回避することもできます。

WordPressにおけるクローンと複製の違いは何ですか?

WordPressの用語では、厳密には微妙な違いがあります。「クローン」はコンテンツの完全なコピーを含み、元のページと全く同じ要素を持つものを指します。一方「複製」は、既存ページからデータを取得して作られる新しいエントリーで、一部の要素が変更されている場合もあります。

本サイトのチュートリアルコンテンツは、 Hostingerの編集方針と価値観に基づき作成されています。

Author
著者

Yūto Ōmura

イギリスから日本へ帰国後、翻訳者として8年従事。英国の大学ではメディア・映像を専攻し、以来、日英両言語にて10年以上複数のウェブサイトおよび動画メディアを運営。プライベートでは、料理をしたり、家族で小旅行に行ったりするのが好きです!

お客様の声

コメントを投稿

Please fill the required fields.Please accept the privacy checkbox.Please fill the required fields and accept the privacy checkbox.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.