Somme tider kommer du i en situation, når du vil oprette et nyt indlæg eller en side, der er identisk med (eller næsten identisk) med et eksisterende indlæg eller en side på dit websted.

Hvis indlægget eller siden er lang eller indeholder mange medier, kan processen med at tilføje alt dette indhold igen virke meget besværlig. Hvis du har masser af indlæg, der vil være meget ens, vil det være meget frustrerende at enten manuelt skulle indtaste al din tekst igen eller tilføje alle mediefiler for at oprette dine nye indlæg eller sider.

En mulighed kan være at åbne det eksisterende indlæg (for nemheds skyld bruger vi “indlæg” til at henvise til indlæg og sider her) i et browservindue eller fane, derefter oprette dit nye indlæg i et andet vindue og skifte mellem to af dem, der kopierer og indsætter dit indhold. Når alt kommer til alt, gør de nyeste (post-Gutenberg) versioner af WordPress dette ganske let med en “Kopier alt indhold” tilgængeligt for dig.

Men hvis du skal gøre dette igen og igen, er der risiko for at begå fejl. Hvad hvis du ved en fejltagelse redigerer det originale indlæg og tilsidesætter det indhold, du allerede har offentliggjort på dit websted? Eller hvis du har et stort antal indlæg, du skal kopiere, og du mister oversigten over hvilke, du har oprettet?

Det kan være en potentiel hovedpine.

Heldigvis er der en lettere måde. Der er gratis plugins, der giver dig mulighed for at duplikere dine indlæg og sider, så du kan redigere og finpudse dem for at oprette nye indlæg, der er næsten identiske med dit eksisterende indhold.

I dette indlæg viser vi dig nogle af de metoder, du kan bruge til at gøre dette, og fremhæver nogle af de bedste plugins til opgaven.

Men først viser vi dig, hvordan du duplikerer en side eller et indlæg i WordPress på den semi-manuelle måde, uden et plugin. Dette involverer kopiering og indsætning, men WordPress gør dette meget let at udføre. Så hvis du kun har et indlæg at kopiere, vil det sandsynligvis være hurtigere end at installere et plugin og gøre det på den måde.

Sådan duplikeres en side eller post i WordPress, den semi-manuelle måde

Denne metode kan være hurtigere, hvis du bare har et indlæg at duplikere, da det sparer dig tid på at installere et plugin. Hvis du har en masse indlæg at duplikere, vil jeg alvorligt anbefale at springe denne sektion over: du vil synes, det er meget hurtigere, for ikke at nævne mere nøjagtige, at bruge et plugin.

Så for dem af jer, der bare har brug for at kopiere et indlæg eller en side, så gør du dette.

Start med at åbne dit eksisterende indlæg eller side. Sørg for, at du ikke har valgt en individuel blok ved at klikke uden for en blok i dit indlæg eller vælge fanen Dokument i redigeringsruden til højre for skærmen. Hvis du har valgt en blok, vil WordPress bare kopiere indholdet af denne blok og ikke hele dokumentet.

Klik nu på ellipsen øverst til højre på redigeringsskærmen (tre prikker arrangeret oven på hinanden).

Kopier alt indhold i WordPress
Kopier alt indhold i WordPress

En menu vises. Mod bunden af ​​denne menu ser du en indstilling Kopier alt indhold. Klik på det, så får du en meddelelse om, at dit indhold er blevet kopieret.

Opret nu dit nye indlæg. Giv dit indlæg en titel, og klik derefter på den første tomme blok, der er oprettet til dig på redigeringsskærmen. Brug genvejstasterne til at indsætte på dit tastatur (Ctrl + V på en pc, Cmd + V på en Mac, eller højreklik, og vælg Indsæt i genvejsmenuen, der vises.

Indholdet af dit ældre indlæg vises nu i dit nye indlæg. Magi! (OK, måske ikke.)

Nu kan du redigere dette indlæg og gøre det anderledes end det ældre indlæg. Dette er noget, jeg kraftigt anbefaler at gøre – der er ikke meget mening i at have blogindlæg, der er nøjagtige duplikater af hinanden på dit websted. Ikke kun vil det forvirre besøgende, men det er også dårligt for SEO.

Men hvad nu hvis du vil oprette flere duplikater af dit indlæg? Læs videre…

Sådan duplikeres en side eller indlæg i WordPress ved hjælp af et plugin

Langt den hurtigste, nemmeste og mest pålidelige måde at duplikere indlæg er ved hjælp af et plugin. Dette sparer dig tid, undgår enhver menneskelig fejl og giver dig mulighed for at kopiere enhver indlægstype, du ønsker. I vores erfaring er en duplikering af indlæg faktisk mere almindeligt med tilpassede indlægstyper. Det er usædvanligt at have to blogindlæg, der er næsten identiske med hinanden, men det er f.eks ganske almindeligt for produkter i en butik.

Så her er nogle plugins, der gør processen med at duplikere indlæg let og vejledning i, hvordan man bruger dem.

WooCommerce

Du spekulerer måske på, hvorfor jeg har inkluderet WooCommerce her, da det er et e-handelsplugin, ikke et indlægs duplikat-plugin.

Men det er værd at vide, at WooCommerce giver dig mulighed for at duplikere produkter uden at installere et ekstra plugin. Så før du begynder at søge efter et duplikat-plugin og bruge det til at duplikere dine produkter, skal du bare bruge de funktioner, der følger med WooCommerce.

Hvis du går til hovedskærmbilledet i WooCommerce og holder musen hen over ethvert produkt, ser du et duplikat-link under dette indlæg.

WooCommerce duplikat produktindstilling
WooCommerce duplikat produktindstilling

Klik på det duplikerede link, så oprettes et nyt produkt. Du føres direkte til redigeringsskærmen for det nye produkt, så du kan foretage ændringer i det og derefter offentliggøre det.

Det er værd at bemærke, at sneglen til det nye produkt er sneglen til det gamle produkt med -kopi tilføjet, så selvom du ændrer titlen på det nye produkt, skal du også redigere sluggen.

Redigering af et duplikeret produkt
Redigering af et duplikeret produkt

Duplicate Post Plugin

Duplicate Post er det mest populære plugin til duplikering af indlæg med over 3 millioner downloads.

Når du har aktiveret det, tilføjer det et klon-link til hvert indlæg i hovedskærmen for indlæg i WordPress-admin.

Pluginet Duplicate Post
Pluginet Duplicate Post

Klik på linket Klon under det indlæg, du vil duplikere, og der oprettes et nyt indlæg til dig med det samme indhold og titel og en status som udkast.

Du kan derefter redigere det nye indlæg og give det en ny titel (noget, som jeg stærkt vil anbefale – WordPress giver dig mulighed for at duplikere titler, men det er ikke særlig godt for brugeroplevelsen).

Det tilføjer også det samme Klon-link til sider og til brugerdefinerede indlægstyper (hvis du aktiverer dem i indstillingerne).

Duplicate Page

Duplicate Page-pluginet har haft over 900.000 downloads og er et alternativ til Duplicate Post-pluginet ovenfor.

Når du har installeret pluginet, skal du gå til skærmbilledet Indlæg eller sider eller til skærmbilledet for admin til din brugerdefinerede indlægstype, og du finder et kopi af dette link under hvert indlæg. Her er min med en tilpasset indlægsype:

Pluginet Duplicate Page
Pluginet Duplicate Page

Klik på linket, så får du et nyt indlæg (eller side eller indlæg af din brugerdefinerede indlægstype) med det samme indhold og titel som det originale indlæg med en status som Udkast. Du bliver nødt til at redigere den og ændre dens snegle, før du offentliggør den.

Bemærk: Hvis du bruger WooCommerce, vises dupliker dette linket fra dette plugin ikke på dit skærmbillede af produkter. WooCommerce tilsidesætter det med sit eget dupliker-link, som jeg beskrev tidligere i dette indlæg.

Sådan duplikeres indlæg eller sider i bulk

De plugins, jeg allerede har nævnt, giver dig mulighed for at duplikere indlæg, et ad gangen. Men hvad nu hvis du har brug for at duplikere alle indlæg på dit websted, eller alle indlæg fra et tilpasset indlægstyper? Eller måske alle de indlæg, du har offentliggjort i år?

WP Bulk Post Duplicator-plugin giver dig mulighed for at gøre netop det. I stedet for at tilføje et link til duplikat af individuelle indlæg, giver det dig en indstillingsskærm, der giver dig mulighed for at duplikere indlæg i bulk ifølge de kriterier, du har angivet.

Bemærk: Dette plugin er ikke blevet opdateret i to år i skrivende stund, så vi anbefaler, at du installerer det på et udviklingssted og tester det, før det bruges på et live site. Vi brugte det på vores testsite uden problemer.

Når du har installeret pluginet, skal du gå til Indstillinger> WP Bulk Post Duplicator for at se indstillingsskærmen for plugin.

Start med at vælge de indlægstyper, du vil duplikere, samt indlægs-statusserne. Så hvis du vælger indlæg og offentliggjort, duplikerer plugin alle dine offentliggjorte indlæg. Hvis du i stedet vælger indlæg og udkast, duplikerer det bare alle dine udkast-indlæg.

Bulk duplikat-indstillinger - indlægstype og status
Bulk duplikat-indstillinger – indlægstype og status

Rul ned og vælg året for de stillinger, du vil duplikere (dette er valgfrit). Du kan også derefter specificere status for de nye oprettelser. Hvis du ikke vælger noget her, vil det som standard være udkast.

Bulk Duplicate Settings - år og offentliggør status
Bulk Duplicate Settings – år og offentliggør status

Klik på knappen Dupliker, så pluginet duplikerer dine indlæg. Her kan du se alle mine sider duplikeret med 12 eksisterende publicerede sider og 12 nye udkast til sider. Derefter skal jeg arbejde igennem alle siderne og redigere dem, før jeg offentliggør dem. Det vil naturligvis tage tid, men det er blevet gjort hurtigere ved bulk duplikering,

Skriv dit eget indlægs-duplikationsplugin

Hvad hvis du ikke ønsker at gøre brug af et tredjeparts plugin til at duplikere indlæg og hellere vil kode dine egne?

Intet problem. Følg blot disse trin for at oprette dit eget indlægs-duplikationsplugin.

1. Opsætning af plugin

Start med at konfigurere plugin. Føj en ny fil til din wp-indhold/ plugins-mappe, og tilføj denne kommenterede tekst til den (du kan redigere din for at afspejle dit forfatternavn):

<?php
/*
Plugin Name: Kinsta Duplicate posts and pages
Plugin URI: https://kinsta.com
Description: Plugin to accompany kinsta posst on duplicating posts in WordPress. Allows for duplication of posts and pages.
Version: 1.0
Author: Rachel McCollin
Author URI: https://rachelmccollin.com
TextDomain: kinsta
License: GPLv2
*/

2. Oprettelse af funktionen

Tilføj nu funktionen til at duplikere indlæg og koble den til en handlings-hook. Denne handlings-hook findes ikke endnu: Bare rolig, vi opretter den snart.

function kinsta_duplicate_post(){
}
add_action( 'admin_action_kinsta_duplicate_post', 'kinsta_duplicate_post' );

Lad os nu oprette den handling, der kommer som en del af en funktion til at tilføje dublikations-linket til skærmbillederne om indlæg og sider.

function kinsta_duplicate_post_link( $actions, $post ) {
 if ( current_user_can( 'edit_posts') ) {
  $actions['duplicate'] = 'Duplicate';
 }
 return $actions;
}
add_filter( 'post_row_actions', 'kinsta_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'kinsta_duplicate_post_link', 10, 2);

Det tilføjer linket til duplikering, men det duplikerer faktisk ikke noget endnu.

3. Tilføjelse af duplikations-funktionalitet

Lad os tilføje koden til duplikationen. Alle resten af koden går ind i din tomme kinsta_duplicate_post () -funktion.

Lad os først kontrollere, at der er valgt et gyldigt indlæg, og kontrollere, om der mangler en nonce, for sikkerhed:

global $wpdb;

// Die if post not selected
if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'kinsta_duplicate_post' == $_REQUEST['action'] ) ) ) {
 wp_die( __( 'Please select a post to duplicate.', 'kinsta' ) );
}

// Verify nonce
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) {
 return;
}

Nu skal vi hente ID’et for det indlæg, der skal duplikeres, sammen med dets data:

// Get id of post to be duplicated and data from it
$post_id = ( isset( $_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );

Vi kan bruge det til at definere en række argumenter og indsætte et nyt indlæg i databasen ved hjælp af wp_insert_post(), men først skal du tilføje en betinget erklæring for at kontrollere, at indlægget ikke er null:

if ( isset( $post ) && $post != null ) {

}

Tilføj dette inden for den betingede erklæring:

// args for new post
$args = array(
 'comment_status' => $post->comment_status,
 'ping_status'    => $post->ping_status,
 'post_author'    => $post->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 new post
$new_post_id = wp_insert_post( $args );

Nu henter vi taksonomierne fra det gamle indlæg og føjer dem til det nye:

// add taxonomy terms to the new post

// identify taxonomies that apply to the post type
$taxonomies = get_object_taxonomies( $post->post_type );

// add the taxonomy terms to the new post
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 );
}

Og så tilføjer vi eventuelle ekstra indlægs-metadata ved hjælp af en SQL-forespørgsel:

// use SQL queries to duplicate postmeta
$post_metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
if ( count( $post_metas )!=0 ) {
 
$sql_query = "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) ";
 
foreach ( $post_metas as $post_meta ) {
  $meta_key = $post_metas->meta_key;
  if( $meta_key == '_wp_old_slug' ) continue;
  $meta_value = addslashes( $post_metas->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 );

}

Endelig tjekker vi, hvad indlægstype indlægget er, og omdirigerer til det relevante skærmbillede.

// redirect to admin screen depending on post type
$posttype = get_post_type( $post_id );
wp_redirect( admin_url( 'edit.php?post_type=' . $posttype ) );

Nu uden for seler for if ( isset( $post ) && $ post != Null ) kontrollen tilføjer vi en fejlmeddelelse:

else {
 // display an error message if the post id of the post to be duplicated can't be found
 wp_die( __( 'Post cannot be found. Please select a post to duplicate.', 'kinsta' ) );
}

Og det er det!

Det fulde plugin

Her er den fulde kode for pluginet:

<?php

/* Plugin Name: Kinsta Duplicate posts and pages

Plugin URI: https://kinsta.com
Description: Plugin to accompany kinsta posst on duplicating posts in WordPress. Allows for duplication of posts and pages. Version: 1.0 Author: Rachel McCollin
Author URI: https://rachelmccollin.com
TextDomain: kinsta
License: GPLv2
*/

/********************************************************************
kinsta_duplicate_post() - duplicates the selected post
*********************************************************************/

function kinsta_duplicate_post(){

global $wpdb;

// Die if post not selected
if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'kinsta_duplicate_post' == $_REQUEST['action'] ) ) ) {

wp_die( __( 'Please select a post to duplicate.', 'kinsta' ) );
}

// Verify nonce
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) {
return;
}

// Get id of post to be duplicated and data from it
$post_id = ( isset( $_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );

// duplicate the post
if ( isset( $post ) && $post != null ) {

// args for new post
$args = array(
'comment_status' => $post->comment_status,
'ping_status'    => $post->ping_status,
'post_author'    => $post->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 new post
$new_post_id = wp_insert_post( $args );

// add taxonomy terms to the new post

// identify taxonomies that apply to the post type
$taxonomies = get_object_taxonomies( $post->post_type );

// add the taxonomy terms to the new post
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 );

}

// use SQL queries to duplicate postmeta
$post_metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");

if ( count( $post_metas )!=0 ) {
 
 $sql_query = "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) ";

 foreach ( $post_metas as $post_meta ) {

  $meta_key = $post_metas->meta_key;
  if( $meta_key == '_wp_old_slug' ) continue;
  $meta_value = addslashes( $post_metas->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 );

 }

 // redirect to admin screen depending on post type
 $posttype = get_post_type( $post_id );
 wp_redirect( admin_url( 'edit.php?post_type=' . $posttype ) );

 } else {

  // display an error message if the post id of the post to be duplicated can't be found
  wp_die( __( 'Post cannot be found. Please select a post to duplicate.', 'kinsta' ) );
 }

}
add_action( 'admin_action_kinsta_duplicate_post', 'kinsta_duplicate_post' );

// Add the duplicate link to action list for post_row_actions
function kinsta_duplicate_post_link( $actions, $post ) {

 if ( current_user_can( 'edit_posts') ) {
  $actions['duplicate'] = 'Duplicate';
 }

 return $actions;

}
add_filter( 'post_row_actions', 'kinsta_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'kinsta_duplicate_post_link', 10, 2);

Du kan også finde det fulde plugin på github.

Tillykke! Du har nu dit eget plugin til at kopiere indlæg og sider på dit WordPress-sted.

Kredit: Denne kode blev delvist skrevet med henvisning til et indlæg på Hostinger-bloggen.

Resumé

Brug af et plugin til at kopiere indlæg og sider kan være hurtigere end at gøre det manuelt og kan fjerne risikoen for fejl, når der kopieres indhold på tværs.

Hvis du kun har et indlæg til at kopiere, kan du finde det hurtigere at bruge den indbyggede funktion “Kopier alt indhold” i WordPress, men for mere end et indlæg betaler det sig at bruge et plugin. Hvis du bruger et af de ovennævnte plugins eller måske koder dit eget, vil du være i stand til at kopiere så mange indlæg, sider eller tilpassede indlægstyper så ofte som du vil.

Hvis du gør det på denne måde, sparer du tid og (endnu vigtigere), fjerner du risikoen for, ved et uheld, at redigere dit originale indlæg, når du skulle have redigeret duplikat-indlægget.