WordPressでウェブサイトを運営していると、過去に作成した投稿や固定ページのデザイン、構成をそのまま再利用したい場面が頻繁に訪れます。
特に、ランディングページ(LP)の量産や、決まったフォーマットでの定例報告、複雑なブロック配置を行ったページなどは、一から作り直すのは非常に効率が悪いものです。
しかし、WordPressの標準機能では、既存の投稿をワンクリックで複製するボタンは用意されていません。
本記事では、WordPressの投稿や固定ページを効率的に複製するための最適な方法を、プラグインの利用から手動の手順まで詳しく解説します。
作業効率を劇的に向上させ、管理コストを削減するための具体的なテクニックを身につけていきましょう。
投稿・固定ページを複製するメリットと活用シーン
記事の複製機能を導入することで、サイト運営における多くの手間を削減することが可能になります。
まず大きなメリットとして挙げられるのが、「デザインとレイアウトの統一性を保てる」という点です。
例えば、複数の商品を紹介するページを作る際、画像の位置やボタンの配色、余白の設定などを毎回手動で再現するのは時間がかかるだけでなく、設定ミスを招く原因にもなります。
複製機能を使えば、ベースとなるページを作成しておき、それをコピーして中身のテキストや画像だけを差し替えるだけで、クオリティの高いページを短時間で完成させられます。
また、「公開済みの記事を安全にリライトする」という用途でも非常に役立ちます。
大規模なリライトを行う際、公開中の記事を直接編集してしまうと、作業中に表示が崩れたり、誤って内容を消去してしまったりするリスクがあります。
一旦記事を複製して「下書き」状態のコピーを作成し、そこで納得いくまで編集を行った後、内容を元の記事に反映させるという手法をとれば、リスクを最小限に抑えることができます。
さらに、ABテストを実施するために少しだけ内容を変えた複数のパターンを作成する場合にも、複製機能は欠かせません。
おすすめの複製プラグイン3選
WordPressでページを複製する場合、最も一般的で確実な方法はプラグインを活用することです。
ここでは、2026年現在でも信頼性が高く、多くのユーザーに支持されている定番のプラグインを3つご紹介します。
1. Yoast Duplicate Post
WordPressの複製用プラグインとして最も有名であり、デファクトスタンダードと言えるのが「Yoast Duplicate Post」です。
単に記事をコピーするだけでなく、どの項目(タイトル、日付、スラッグ、メタデータなど)を複製し、どの項目を複製しないかといった詳細な設定が可能です。
さらに、「リライト&更新」機能という独自の機能を持っており、公開中の記事を下書きとして複製し、編集が終わったら元の記事へ上書き保存するという高度な運用が可能です。
開発元もSEOプラグインで有名なYoast社であるため、セキュリティ面や他プラグインとの互換性においても非常に高い信頼性があります。
2. Duplicate Page
「設定は最小限でいいから、とにかくシンプルに複製したい」という方に最適なのが「Duplicate Page」です。
インストールして有効化するだけで、投稿一覧画面に「Duplicate This」というリンクが表示されるようになります。
設定画面では、複製した記事を「下書き」にするか「公開」にするか、あるいは「非公開」にするかといった基本的な挙動を選択するだけです。
動作が非常に軽く、余計な機能がないため、プラグインによるサイトの重量化を避けたい場合におすすめです。
3. Post Duplicator
「Post Duplicator」は、カスタム投稿タイプやカスタムタクソノミー(カテゴリーやタグ)を多用しているサイトで真価を発揮します。
標準の投稿だけでなく、独自に作成した投稿タイプや、それに紐付いた複雑なメタ情報もしっかりと引き継いで複製してくれます。
インターフェースも直感的で、一覧画面からワンクリックで複製を生成できるため、操作に迷うことがありません。
Yoast Duplicate Postを使った具体的な複製手順
ここからは、最も多機能で推奨される「Yoast Duplicate Post」を例に、具体的な導入から操作までの流れを解説します。
プラグインのインストールと有効化
まず、WordPressの管理画面にログインし、左メニューの「プラグイン」から「新規追加」を選択します。
検索窓に「Yoast Duplicate Post」と入力し、該当するプラグインが表示されたら「今すぐインストール」をクリックします。
インストールが完了したら、ボタンが「有効化」に変わるので、忘れずにクリックしてください。
基本設定の確認
有効化ができたら、「設定」メニュー内に追加された「Duplicate Post」をクリックして設定画面を開きます。
「複製する要素」タブでは、タイトル、本文、アイキャッチ画像、テンプレート、作成者などのうち、どれをコピーに含めるかを選択できます。
「公開日」のチェックを外しておくことをおすすめします。
公開日まで複製してしまうと、新しい記事が古い日付で保存されてしまい、アーカイブの中で埋もれてしまう可能性があるからです。
また、「権限」タブでは、どのユーザー権限(管理者、編集者、投稿者など)に複製を許可するかを指定できます。
「表示」タブでは、複製ボタンを表示させる場所(投稿一覧、編集画面、管理バーなど)をカスタマイズ可能です。
実際に複製する操作
設定が完了したら、投稿一覧画面または固定ページ一覧画面を表示します。
複製したい記事のタイトルにマウスカーソルを合わせると、メニューの中に「複製」や「新規下書き」という項目が追加されています。
「複製」をクリックすると、その場ですぐに同じ内容の記事が「下書き」として作成されます。
「新規下書き」をクリックした場合は、複製されると同時にその記事のエディタ画面が開くため、すぐに編集を開始できて便利です。
プラグインを使わずに手動で複製する方法
サイトの保守管理上の理由で、可能な限りプラグインの数を増やしたくないという場合もあるでしょう。
ここでは、標準のエディタ(ブロックエディタ / Gutenberg)の機能を活用して、手動で内容をコピーする手順を説明します。
「すべてのブロックをコピー」機能を利用する
ブロックエディタには、ページ内のすべてのブロックを一度にクリップボードへコピーする便利な機能が備わっています。
まず、元となる記事の編集画面を開き、画面右上の「三点リーダー(縦に3つの点)」をクリックします。
メニューの下方にある「すべてのブロックをコピー」を選択します。
次に、新規投稿作成画面を開き、本文の入力エリア(「ブロックを選択するには「/」を入力」と書かれている場所)にカーソルを置きます。
そこで貼り付け(WindowsならCtrl+V、MacならCmd+V)を実行すれば、レイアウトや画像配置がそのまま再現されます。
ただし、この方法では記事のタイトルやアイキャッチ画像、パーマリンク設定、SEO用メタタグ(プラグインで設定している場合)などはコピーされません。
あくまで本文の内容だけを効率的に移したい場合に適した方法です。
再利用可能ブロック(シンクロブロック)の活用
特定のパーツやセクションだけを複数のページで使い回したい場合は、複製よりも「同期ブロック」機能を使う方が賢明です。
これは、一度作成したブロックを登録しておき、他のページで呼び出せる機能です。
元のブロックを編集すれば、そのブロックを配置しているすべてのページに修正が反映されるため、共通の案内文や定型フォームの管理に最適です。
プログラムコードによる複製のカスタマイズ
特定の条件で自動的に記事を複製したい場合や、管理画面のUIをより独自にカスタマイズしたい場合は、functions.phpにコードを記述する方法があります。
以下のサンプルコードは、投稿一覧に「複製」リンクを追加し、クリックされた際に元記事の内容を引き継いだ新しい下書きを作成する基本的な処理です。
/**
* 投稿一覧に複製リンクを追加する関数
*/
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('複製する投稿が選択されていません。');
}
// ノンスの確認(セキュリティ対策)
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return;
// 元の投稿IDを取得
$post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );
// 現在のユーザーを作成者として設定
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
// 投稿データが存在する場合にのみ複製処理を実行
if (isset( $post ) && $post != null) {
$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
);
// 新しい投稿を挿入
$new_post_id = wp_insert_post( $args );
// タクソノミー(カテゴリー・タグ)の複製
$taxonomies = get_object_taxonomies($post->post_type);
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);
}
// メタデータの複製(カスタムフィールドなど)
$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);
}
// 複製完了後に投稿一覧へリダイレクト
wp_redirect( admin_url( 'edit.php?post_type=' . $post->post_type ) );
exit;
} else {
wp_die('投稿の取得に失敗しました: ' . $post_id);
}
}
add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' );
// 投稿一覧画面に「複製」リンクを表示
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="この投稿を複製" rel="permalink">複製</a>';
}
return $actions;
}
add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'rd_duplicate_post_link', 10, 2 );
このコードをテーマのfunctions.phpに追記することで、プラグインなしでも投稿一覧からワンクリックで複製を行えるようになります。
ただし、データベースを直接操作するような高度な処理を含むため、必ずバックアップを取得してから実施してください。
複製時に注意すべきSEOと運用のポイント
記事の複製は非常に便利ですが、適切な処理を行わないと検索エンジンからの評価を下げてしまうリスクがあります。
以下の3つのポイントは、複製作業を行う際に必ず確認するようにしてください。
1. パーマリンク(スラッグ)の変更
記事を複製すると、元の記事のスラッグに「-2」や「-copy」といった文字列が付与された状態で保存されることが一般的です。
そのまま公開してしまうと、URLが意味をなさないものになり、ユーザーや検索エンジンにとって不親切な状態になります。
新しい記事の内容に合わせた適切な英単語を用いたスラッグへと、必ず手動で書き換えるようにしましょう。
2. 重複コンテンツの回避
内容が酷似したページが複数存在することは、Googleなどの検索エンジンによって「重複コンテンツ」とみなされる原因になります。
重複コンテンツと判定されると、検索順位が大幅に下がったり、インデックスから除外されたりする可能性があります。
複製はあくまで「雛形」として利用し、公開する前には必ず独自の内容を盛り込み、付加価値の高い記事に仕上げることを意識してください。
3. 内部リンクと canonical タグの確認
記事内に設置していた内部リンクが、以前の記事のままになっていないかを確認しましょう。
また、SEOプラグインを使用している場合、元の記事の「canonicalタグ(正規化タグ)」設定まで引き継いでしまっていることがあります。
もし新しい記事を独立したページとして評価させたいのであれば、canonicalタグが自分自身のURLを指しているか、あるいは適切に設定し直されているかを確認してください。
プラグイン比較表
どの方法を選ぶべきか迷っている方のために、主要なプラグインと手動の方法を比較表にまとめました。
| 方法 | おすすめ度 | 主な特徴 | 対象ユーザー |
|---|---|---|---|
| Yoast Duplicate Post | ★★★★★ | 多機能・リライト機能あり | 全ユーザー |
| Duplicate Page | ★★★★☆ | シンプル・軽量 | 初心者・速度重視派 |
| 手動(ブロックコピー) | ★★★☆☆ | プラグイン不要 | 最小構成を好む方 |
| functions.php | ★★☆☆☆ | 完全カスタマイズ可能 | 開発者・上級者 |
まとめ
WordPressの投稿や固定ページを複製する機能は、サイト運営のスピードと質を向上させるために不可欠なツールです。
最も効率的なのは「Yoast Duplicate Post」などのプラグインを導入し、既存のページをベースに新しいコンテンツを作成するワークフローを構築することです。
これにより、デザインの不整合を防ぎ、作業時間を大幅に短縮できるようになります。
ただし、便利さの反面、パーマリンクの変更忘れや重複コンテンツの問題には十分に注意を払わなければなりません。
複製した記事は必ず細部までチェックを行い、検索ユーザーにとっても検索エンジンにとっても価値のある、独立したページとして公開することを心がけましょう。
本記事で紹介した手順を参考に、あなたのWordPress運用をより快適で生産性の高いものに変えていってください。
