{"id":1319,"date":"2020-01-04T23:58:55","date_gmt":"2020-01-04T22:58:55","guid":{"rendered":"https:\/\/www.mightypress.de\/?p=1319"},"modified":"2021-06-17T20:22:19","modified_gmt":"2021-06-17T20:22:19","slug":"wie-kann-ich-in-wordpress-eine-seite-kopieren","status":"publish","type":"post","link":"https:\/\/wpfellows.com\/de\/wie-kann-ich-in-wordpress-eine-seite-kopieren\/","title":{"rendered":"Wie kann ich in WordPress eine Seite kopieren?"},"content":{"rendered":"\n

Man muss das Rad ja nicht immer neu erfinden. Manchmal hat man sich selbst schon eine gute Vorlage f\u00fcr eine Seite erstellt und m\u00f6chte diese jetzt einfach nur duplizieren, um sie in etwas anderer Form weiterverwenden zu k\u00f6nnen. Aber wie kann ich in WordPress eine Seite kopieren? Keine Sorge, erkl\u00e4re ich dir alles in dieser kurzen Anleitung<\/a>.<\/p>\n\n\n\n

<\/div>\n\n\n\n

Eine Kopierfunktion in deine WordPress Seite einbauen<\/h2>\n\n\n\n

Von Haus aus bietet WordPress keine M\u00f6glichkeit, eine Seite oder Beitr\u00e4ge zu kopieren. Nicht auszuschlie\u00dfen, dass diese Funktion mal irgendwann ihren Weg in den Kern schafft, aber momentan m\u00fcssen wir uns noch anders behelfen.<\/p>\n\n\n\n

Und zwar, indem wir einfach eine Kopierfunktion in deine Website einbauen.<\/p>\n\n\n\n

F\u00fcr Einsteiger geht es jetzt ein wenig an’s Eingemachte, weil wir direkt in den Code deines WordPress Themes eingreifen. Aber kein Grund zur Sorge: ich f\u00fchre dich da Schritt f\u00fcr Schritt durch.<\/p>\n\n\n\n

Schritt 1: Per FTP mit deinem Server verbinden<\/h3>\n\n\n\n

Um eine Kopierfunktion in deine WordPress Website einzubauen, musst du dich zun\u00e4chst per FTP mit deinem Server verbinden.<\/p>\n\n\n\n

Schritt 2: In dein Theme-Verzeichnis wechseln und die functions.php \u00f6ffnen<\/h3>\n\n\n\n

Jetzt wechselst du in das Verzeichnis deines aktuellen Themes, in dem du auch die Datei functions.php findest. Solltest du damit Schwierigkeiten haben, findest du eine sehr gute Anleitung in diesem Artikel<\/a>.<\/p>\n\n\n\n

Hast du die functions.php Datei gefunden, \u00f6ffnest du sie in deinem bevorzugten Editor. <\/p>\n\n\n\n

Ein Editor ist ein Programm, mit dem du Code bearbeiten kannst. F\u00fcr jemanden, der mit WordPress arbeitet, eine n\u00fctzliche Angelegenheit. Wenn du noch keinen Editor hast, empfehle ich dir das kostenlose Visual Studio Code<\/a>.<\/p>\n\n\n\n

Schritt 3: Code in die functions.php einf\u00fcgen<\/h3>\n\n\n\n

Jetzt kopierst du den folgenden Code komplett unten in deine Datei functions.php und speicherst sie auf dem Server neu.<\/p>\n\n\n\n

\/*\n * Zusatzfunktion um die M\u00f6glichkeit zum Kopieren von Seiten hinzuzuf\u00fcgen. Duplizierte Seiten werden als Entwurf eingestellt. Nach dem Duplizieren wird der Nutzer direkt zum Editor weitergeleitet. \n *\/\nfunction rd_duplicate_post_as_draft(){\n  global $wpdb;\n  if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) {\n    wp_die('Keine Seite zum Duplizieren angelegt!');\n  }\n \n  \/*\n   * Verifikation\n   *\/\n  if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) )\n    return;\n \n  \/*\n   * holt sich die ID der Quelle\n   *\/\n  $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );\n  \/*\n   * und dann die Seitendaten\n   *\/\n  $post = get_post( $post_id );\n \n \n  $current_user = wp_get_current_user();\n  $new_post_author = $current_user->ID;\n \n  \/*\n   * wenn Seitendaten existieren, erstelle das Seitenduplikat\n   *\/\n  if (isset( $post ) && $post != null) {\n \n    \/*\n     * Array f\u00fcr neue Seite\n     *\/\n    $args = array(\n      'comment_status' => $post->comment_status,\n      'ping_status'    => $post->ping_status,\n      'post_author'    => $new_post_author,\n      'post_content'   => $post->post_content,\n      'post_excerpt'   => $post->post_excerpt,\n      'post_name'      => $post->post_name,\n      'post_parent'    => $post->post_parent,\n      'post_password'  => $post->post_password,\n      'post_status'    => 'draft',\n      'post_title'     => $post->post_title,\n      'post_type'      => $post->post_type,\n      'to_ping'        => $post->to_ping,\n      'menu_order'     => $post->menu_order\n    );\n \n    \/*\n     * Seite \u00fcber wp_insert_post() Funktion einf\u00fcgen \n     *\/\n    $new_post_id = wp_insert_post( $args );\n \n    \/*\n     * Alle Terms holen und dem duplizierten Post zuf\u00fcgen\n     *\/\n    $taxonomies = get_object_taxonomies($post->post_type); \/\/ wirft Array f\u00fcr Taxonomien f\u00fcr den Post Type aus (\"category\", \"post_tag\");\n    foreach ($taxonomies as $taxonomy) {\n      $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));\n      wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);\n    }\n \n    \/*\n     * mit zwei SQL Queries die Seitenmeta hinzuf\u00fcgen\n     *\/\n    $post_meta_infos = $wpdb->get_results(\"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id\");\n    if (count($post_meta_infos)!=0) {\n      $sql_query = \"INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) \";\n      foreach ($post_meta_infos as $meta_info) {\n        $meta_key = $meta_info->meta_key;\n        if( $meta_key == '_wp_old_slug' ) continue;\n        $meta_value = addslashes($meta_info->meta_value);\n        $sql_query_sel[]= \"SELECT $new_post_id, '$meta_key', '$meta_value'\";\n      }\n      $sql_query.= implode(\" UNION ALL \", $sql_query_sel);\n      $wpdb->query($sql_query);\n    }\n \n \n    \/*\n     * zum Editor der neuen Seite weiterleiten\n     *\/\n    wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) );\n    exit;\n  } else {\n    wp_die('Konnte Seite nicht erstellen, konnte Originalseite nicht finden: ' . $post_id);\n  }\n}\nadd_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' );\n \n\/*\n * Duplizieren Link zur Seiten\u00fcbersicht hinzuf\u00fcgen\n *\/\nfunction rd_duplicate_post_link( $actions, $post ) {\n  if (current_user_can('edit_posts')) {\n    $actions['duplicate'] = '<a href=\"' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '\" title=\"Duplizieren\" rel=\"permalink\">Duplizieren<\/a>';\n  }\n  return $actions;\n}\n \nadd_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);<\/code><\/pre>\n\n\n\n

Hat alles funktioniert, siehst du jetzt einen Link mit dem Titel \u201eDuplizieren\u201c in der Seiten\u00fcbersicht deiner WordPress Seite. Und zwar immer dann, wenn du mit der Maus \u00fcber den Titel einer Seite gehst.<\/p>\n\n\n\n

Hast du den Link angeklickt, legt WordPress eine Kopie deiner Seite an und speichert sie als Entwurf. Anschlie\u00dfend wirst du direkt zum Editor der neuen Seite weitergeleitet.<\/p>\n\n\n\n

So kannst du mit einem Plugin in WordPress eine einzelne Seite kopieren<\/h2>\n\n\n\n

Wenn dir das Gefummel am Code deiner Website zu aufw\u00e4ndig ist, gibt’s auch einen ganz simplen Weg. Und wie alle simplen Wege in WordPress, l\u00e4uft das auch hier \u00fcber ein Plugin.<\/p>\n\n\n\n

Das Plugin Duplicate Post hilft dir dabei, schnell einzelne Seiten und auch Beitr\u00e4ge zu kopieren. Selbst Custom Post Types sind kein Problem.<\/p>\n\n\n\n

\"WordPress<\/figure><\/div>\n\n\n\n
Zum Download<\/a><\/div>\n\n\n\n

Sobald du dieses kleine Plugin aktiviert hast, siehst du in den Schnellmen\u00fcs in deiner Seiten\u00fcbersicht einen zus\u00e4tzlichen Men\u00fcpunkt mit dem verhei\u00dfungsvollen Namen Duplizieren<\/strong>.<\/p>\n\n\n\n

\"Seite<\/figure><\/div>\n\n\n\n

Klickst du diesen Men\u00fcpunkt an, erstellt das Plugin eine exakte Kopie der gew\u00e4hlten WordPress Seite.<\/p>\n\n\n\n

Dabei macht das Plugin gleich zwei Dinge absolut richtig:<\/p>\n\n\n\n