WordPressでページまたは投稿を複製する方法
公開: 2021-08-26WordPressのページ、投稿、または別の種類のコンテンツを複製する方法をお探しですか?
WordPressコンテンツを簡単に複製できることは、類似したコンテンツの一括作成から、古いコンテンツの更新、デザインの調整など、あらゆる種類の状況で役立ちます。
ただし、多くの場合、異なるページ間でテキストをコピーして貼り付けるだけではありません。 作成したコンテンツに加えて、カテゴリ、タグ、作成者、カスタムフィールド、その他のメタデータなど、デザインと投稿の設定を保持することもできます。
この投稿では、100%無料のソリューションを使用してWordPressページや投稿などを完全に複製する方法についての包括的なガイドを提供します。
最後に、ボタンをクリックするだけでサイト上のコンテンツを複製できるようになります。さあ、始めましょう。
目次
- WordPressで投稿またはページを複製する方法:3つの方法
- プラグインを使用してWordPressページを複製する方法
- Yoast Duplicate Post
- 投稿が重複しています
- WooCommerce
- エディターを使用してWordPressページを複製する方法
- ブロックエディター(グーテンベルク)
- Elementor
- コードを使用してWordPressページを手動で複製する方法
WordPressで投稿またはページを複製する方法:3つの方法
WordPressページ、投稿、またはその他のカスタム投稿タイプを複製するために使用できる主な方法は3つあります。
- プラグイン–投稿またはページを複製する最も簡単な方法は、多くの専用プラグインの1つを使用することです(ほとんどは無料です)。
- エディター–コンテンツをどれだけ完全に複製したいかによっては、コンテンツとデザインの複製だけを気にする場合は、エディターだけを使用できる場合があります。
- 手動コード–日曜大工の場合は、子テーマのfunctions.phpファイルにカスタムコードを追加するだけです。
3つの方法すべてについて説明します–それらを見ていきましょう…
プラグインを使用してWordPressページを複製する方法
サイト上の投稿、ページ、またはその他のコンテンツを簡単に複製できるプラグインはたくさんあります。
WooCommerceストアをお持ちの場合、WooCommerceには、商品を複製するための独自の組み込み機能が含まれています。詳細については、以下をご覧ください。 そうでない場合は、WordPress.orgに次のような無料のプラグインがたくさんあります。
- Yoast Duplicate Post
- 投稿が重複しています
- 重複ページ
- ポストデュプリケーター
- ページと投稿を複製する
WooCommerceに加えて、上記のリストにある2つの無料プラグインでどのように機能するかを示します。
- Yoast Duplicate Postは非常に使いやすく、既存のコンテンツの更新に最適な独自の「書き換えと再公開」機能が含まれているためです。
- 一部の領域をよりきめ細かく制御できるため、投稿を複製します。
どちらのプラグインも無料です。また、両方をテストして、ElementorデザインとネイティブのWordPressエディターで作成されたコンテンツの両方で機能することを確認しました。 特にテストはしていませんが、上記の他のすべてのプラグインもElementorで動作すると思います。
Yoast Duplicate Post
まず、Yoast DuplicatePostを見てみましょう。 このプラグインは、投稿、ページ、またはその他のカスタム投稿タイプをすばやく簡単に複製する方法が必要な場合に最適です。
コンテンツのクローンを作成できることに加えて、既存のコンテンツの更新に役立つ独自の書き換えおよび再発行機能も含まれています。 基本的に、この機能を使用すると、コンテンツを複製して変更を加え、変更をライブで行うときに、複製したバージョンを元のバージョンに「マージ」することができます。
開始するには、WordPress.orgから無料のYoast DuplicatePostプラグインをインストールしてアクティブ化します。
これで、コンテンツを複製するいくつかの異なる方法があります。
まず、メインの投稿またはページリストに移動できます。 リスト内のアイテムにカーソルを合わせると、次の3つのオプションが表示されます。
- クローン–コンテンツを複製し、ブラウザタブを投稿/ページリストに保持します。
- 新しいドラフト–コンテンツを複製し、複製されたコンテンツのエディターを開いて、すぐに作業を開始できるようにします。
- 書き換えと再公開–これは、前述のように、古いコンテンツを更新するための便利な機能です。 主な違いは、終了したらコンテンツを元の投稿にマージできることです。
最も簡単な方法は、[クローン]をクリックすることです。 次に、複製されたコンテンツの新しいドラフトエントリがリストに表示されます。 プラグインは、それが重複バージョンであることを通知するために、「カスタマイズドラフト」通知でマークします。
次に、WordPressエディター内からコンテンツを複製することもできます。 これらのオプションは、投稿/ページサイドバーの[ステータスと表示]セクションにあります。
最後に、[投稿]または[ページ]リストの[一括アクション]ドロップダウンにあるプラグインのオプションを使用して、投稿またはページを一括複製することもできます。
- チェックボックスを使用して、複製するすべての投稿またはページを選択します。
- ドロップダウンから複製方法を選択します–クローンまたは書き換えと再公開。
- [適用]をクリックします。
プラグインの動作をカスタマイズする場合は、 [設定]→[投稿の複製]に移動できます。 この領域では、次のことができます。
- 複製するコンテンツを選択します。
- 複製されたコンテンツのタイトルにカスタムプレフィックスまたはサフィックスを追加します。
- メニューで重複コンテンツの注文方法を選択します。
- 複製の対象にする投稿タイプを選択します。
- コンテンツを複製できるユーザーロールを選択します。
- 重複する投稿リンク/ボタンを表示する場所をカスタマイズします。
投稿が重複しています
Duplicate Postは、投稿やページをすばやく簡単に複製できるという点で、Yoast DuplicatePostと同じ基本機能を提供します。
Yoast Duplicate Postに対するこのプラグインのいくつかの利点は、次のとおりです。
- ワンクリックで投稿/ページを複数回複製できます。 たとえば、4つの重複コピーを作成するように指示できます。
- 投稿間で複製するコンテンツをもう少し制御できます。
- 重複コンテンツをサイトでスキャンする機能が含まれています。これは、重複をすばやく見つけるのに役立ちます。
- サブドメイン上のサイトを含む、異なるWordPressマルチサイトネットワークサイト間でコンテンツをコピーできます(ただし、この機能には19.98ドルのプレミアムプラグインが必要です)。
- 投稿をページに、またはその逆に変換するオプションを提供します(プレミアムバージョンも必要です)。
これらの機能が必要ない場合は、Yoast Duplicate Postを使用することをお勧めします。これは、より人気があり、作業を完了するためです。 ただし、これらの機能が必要な場合は、これを検討する必要があるもう1つの確実なオプションです。
まず、WordPress.orgから無料のDuplicatePostプラグインをインストールしてアクティブ化します。 アクティベートするとすぐに動作を開始します。
[投稿/ページ]リストに移動し、複製するコンテンツにカーソルを合わせます。 コピーするための新しいオプションが表示されます。 その上にカーソルを合わせると、いくつかの追加設定を展開して、作成する複製の数と使用する設定を選択します(これらについては1秒で詳しく説明します)。
Yoast Duplicate Postと同様に、チェックボックスと一括操作のドロップダウンを使用して、複数の投稿を一括コピーすることもできます。
プラグインの設定を構成するには、WordPressダッシュボードの新しい[投稿のコピーと削除]タブに移動します。 ここで、次のようなすべての設定を構成できます。
- 複製するコンテンツ。
- コンテンツを複製できるのは誰か。
- 複製を有効にするカスタム投稿タイプ。
- NS。
1つの優れた点は、複数の設定プロファイルを作成し、コンテンツを複製するときに使用する構成を選択できることです。
設定領域の一番下までスクロールすると、サイト上の重複コンテンツをスキャンする機能もあります。
繰り返しになりますが、コンテンツを複製する簡単な方法が必要な場合は、Yoast DuplicatePostプラグインを使用することをお勧めします。 ただし、これらの機能のいずれかが気になった場合は、DuplicatePostも適切に機能します。
WooCommerce
WooCommerceを使用してeコマースストアを作成している場合、WooCommerceには、製品を複製するための独自の組み込み機能が含まれています。別のプラグインをインストールする必要はありません。
製品を複製するには、ダッシュボードの[製品]領域に移動します。 次に、複製する製品にカーソルを合わせて、[複製]をクリックします。
[公開]設定の[新しいドラフトにコピー]オプションをクリックして、製品エディター内から製品を複製することもできます。
注–これらのオプションは製品にのみ表示されます。 投稿やページを複製したい場合は、上記のプラグインの1つをインストールする必要があります。
エディターを使用してWordPressページを複製する方法
投稿やページのコンテンツ/デザインの複製に主に関心がある場合は、いくつかの組み込みエディター機能のおかげで、プラグインがなくても問題ない可能性があります。
このセクションでは、ネイティブブロックエディター(グーテンベルク)またはElementorを使用して作成したデザインをすばやく複製する方法を示します。
これらの方法はどちらもコンテンツとデザインを複製するだけであることに注意することが重要です。タイトル、カテゴリ、タグ、カスタムフィールドなどの重要なメタデータを手動で再作成する必要があります。
ブロックエディター(グーテンベルク)
ブロックエディターからコンテンツをすばやく複製するには、複製する投稿またはページのエディターを開くことから始めます。
右上隅にある3つのドットのアイコンをクリックして、メニューを展開します。 次に、すべてのコンテンツをコピーするオプションを選択します。
次に、新しい投稿またはページを作成します。 次に、エディターをクリックしてコンテンツを貼り付けます。 次のいずれかを実行できます。
- Ctrl + VやCmd + Vなどのキーボードショートカットを使用します。
- 右クリックして[貼り付け]を選択します。
エディターに元のコンテンツの正確なコピーが表示されます。 ただし、タイトル、カテゴリ、タグなどを手動で追加する必要があります。
Elementor
注–上記のプラグインを使用して、Elementorで作成されたページまたは投稿を複製できます。 ただし、(作成者やカテゴリなどの他のメタデータではなく)Elementorの投稿/ページのデザインの複製に主に関心がある場合は、Elementorのテンプレートシステムを使用して複製できます。
Elementorページを複製する方法についてのガイドがありますが、基本的な考え方は次のとおりです。
まず、Elementorエディターインターフェイスからデザインをテンプレートとして保存できます。
次に、新しい投稿またはページを作成し、Elementorテンプレートライブラリからテンプレートを挿入できます。
1ページ以上を複製したい場合は、ElementorのWebサイトキット機能を使用して、完全なWebサイトデザインをエクスポート/インポートすることもできます。
Elementorのインポート/エクスポート機能を使用すると、独自の作品をインポートして、新しいWebサイトを数秒で作成できます。 複数のプロジェクトに使用できるブループリントを作成するか、お気に入りのWeb作成を再利用するだけです。 次に、Webサイト全体をエクスポートして、他のプロジェクトに適用します。
自分で作成したものを使用することも、デザイナーが作成したWebサイトキットのライブラリから選択することもできます。 それをあなたのウェブサイトに適用し、コンテンツを追加して、あなた自身のものにするだけです。
コードを使用してWordPressページを手動で複製する方法
日曜大工(DIY)アプローチを好む場合は、カスタムコードを使用して独自の複製ページ関数を作成することもできます。 この方法では、サイトに別のプラグインをインストールする必要がなくなる以外に、プラグインルートにメリットはありません。
ただし、別のプラグインを回避することが重要な場合は、このアプローチで問題なく、通常のエディターコンテンツとElementorで機能します。
このコードを使用するには、テーマのfunctions.phpファイルまたはコードスニペットなどのコード管理プラグインにコードを追加する必要があります。 これをfunctions.phpファイルに追加する場合は、必ず子テーマを使用してください。
<?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'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
<?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'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
<?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'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
デフォルトでは、スニペットは投稿とページの両方の複製を有効にします。 どちらか一方に対してのみ有効にする場合は、コードスニペットの下部にあるpage_row_actionsまたはpost_row_actionsフィルターを削除できます。
ページと投稿を複製してWeb作成プロセスを改善する
WordPressサイトで作業している場合、WordPressページ、投稿、またはその他の投稿タイプを複製できると非常に便利です。
この投稿では、コンテンツの複製に使用できる3つの異なる方法を共有しました。
ほとんどの人にとって、投稿またはページを完全に複製する最も簡単な方法は、無料のYoast DuplicatePostプラグインを使用することです。 すぐに動作を開始し、ブロックエディター(Gutenberg)、Elementor、およびClassicTinyMCEエディターで動作します。 また、ページから投稿、および使用している可能性のあるカスタム投稿タイプまで、すべての投稿タイプで機能します。
WooCommerceストアをお持ちの場合は、WooCommerceの組み込み機能を使用して商品を複製することもできます。 または、別のプラグインをインストールしたくない場合は、サイトにカスタムコードを追加できます。
最後に、投稿のコンテンツ/デザインを複製するだけでよい場合は、Elementorのテンプレートシステムを使用するか、ブロックエディターのオプションを使用してすべてのコンテンツをコピーできます。
行く前に、簡単なリマインダーがあります。 SEOに悪影響を与える可能性があるため、ほとんどの状況で重複コンテンツを公開することは望ましくありません。 したがって、コンテンツを変更せずに(おそらくURLを変更するためだけに)ページを複製する場合は、終了したら元のページをリダイレクトすることを検討する必要があります。
WordPressのページや投稿を複製する方法についてまだ質問がありますか? コメント欄でお知らせください。