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