Jak łatwo zduplikować stronę WordPress / opublikować?

Opublikowany: 2021-11-05
zduplikowana treść w wordpressie

Powielanie istniejącej zawartości stron lub postów może być przydatne w wielu sytuacjach. Możesz użyć głównego posta/strony jako szablonu i szybko wykonać swoje zadanie. Czy możesz pomyśleć, ile czasu by to kosztowało, gdybyś musiał odtworzyć zawartość tej samej strony/postu?

Cóż, nie wyobrażam sobie tego. Na szczęście istnieją sposoby na duplikowanie treści na stronie/postu WordPress. W tym poście pokażę, jak natychmiast zduplikować stronę / post WordPress.

Zacznijmy więc.

Spis treści
  • Dlaczego zduplikować stronę/post WordPress?
  • Zduplikuj zawartość w WordPress z wtyczką
  • Zduplikowana strona/post WordPress bez wtyczki
  • Ostatnie słowa

Dlaczego zduplikować stronę/post WordPress?

Kiedy wprowadzasz nowe zmiany na swojej stronie lub poście, może być konieczne szybkie sklonowanie strony/postu.

Na przykład masz stronę sprzedaży z wieloma sekcjami; teraz musisz ponownie utworzyć tę samą stronę sprzedaży dla innego produktu, co zrobisz? Utworzyć ponownie całą stronę?

Oczywiście nie. Będziesz mógł uzyskać dokładnie tę samą stronę, powielając ją. Będziesz mógł od razu przystąpić do pracy i zaoszczędzić czas. Możesz zduplikować stronę/post w WordPressie na dwa sposoby – 1. Z wtyczką, 2. Bez wtyczki.

Zduplikuj zawartość w WordPress z wtyczką

Istnieje kilka wtyczek, takich jak: Duplicate Page, Post Duplicator, Duplicate page i Post, Page i Any Custom Post; które pomogą Ci natychmiast zduplikować stronę / post WordPress. Ale najpopularniejszym jest Yoast Duplicate Post.

Najpierw zainstaluj i aktywuj wtyczkę Yoast Duplicate Post z katalogu wtyczek WordPress.

Z panelu przejdź do Post -> All Post. (Aby zduplikować stronę, przejdź do Strony -> Wszystkie strony)

Teraz najedź kursorem na dowolny post, a zobaczysz dwie nowe opcje – „Klonuj i Nowa wersja robocza”.

Teraz kliknij przycisk klonowania, aby zduplikować post.

Jeśli jednak chcesz utworzyć klona i natychmiast otworzyć go w edytorze postów, kliknij przycisk „Nowa wersja robocza”.

Zduplikowana strona/post WordPress bez wtyczki

Jeśli nie chcesz zwiększać liczby instalowanych wtyczek, możesz skorzystać z tej metody. To bardzo proste, wystarczy skopiować kody do pliku function.php, a wtedy będziesz mógł bardzo łatwo zduplikować stronę/posty WordPress.

Uwaga: przed edycją któregokolwiek z plików WordPress zaleca się najpierw wykonać kopię zapasową witryny.

Najpierw przejdź do Wygląd -> Edytor motywów i kliknij „Funkcje motywu”. Teraz skopiuj poniższy kod i wklej go tutaj.

 /* * 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'] = '<a href="' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->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 );

Nie zapomnij zaktualizować pliku.

Powyższy kod zadziała w przypadku duplikowania postów. Jeśli chcesz zduplikować strony, po prostu zastąp ostatnią linię następującym kodem:

 add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);

Ostatnie słowa

Mam nadzieję, że teraz masz łatwy sposób na zduplikowanie strony/postu WordPress. Nie ma znaczenia, czy używasz wtyczki, czy nie; uzyskasz ten sam wynik w obie strony. Jeśli masz jakieś pytania lub sugestie, daj mi znać w polu komentarza poniżej.