WordPress Sayfa Kopyalama İşlemi Nasıl Yapılır?
WordPress sayfa kopyalama / çoğaltma işleminin nasıl yapıldığına dair kolay bir yol arıyorsanız bu kılavuzdaki yöntemlerden faydalanabilirsiniz. Aşağıda hem eklentisiz hem de WordPress sayfa kopyalama eklentisi ile bu işlemin nasıl yapılacağını adım adım açıkladık…
Sayfa/yazı kopyalamanın veya çoğaltmanın en hızlı ve güvenli yolu bu amaç için tasarlanmış bir eklenti kullanmaktır. Bu size hem zaman kazandıracak hem de manuel hatalar yapmanızı önleyerek tek tıkla istediğiniz gönderi türünü kopyalamanıza olanak tanıyacaktır.
İşte, kullanabileceğiniz en iyi WordPress sayfa kopyalama eklentileri:
1. Yoast Duplicate Post eklentisiyle WordPress Sayfa/Yazı Kopyalama
Duplicate Post, Wp sayfa çoğaltma işlemi için tercih edebileceğiniz en popüler eklentilerden biridir. Eklentiyi yükleyip etkinleştirdiğinizde, WordPress Yazılar/sayfalar bölümündeki her alana bir Klonlama bağlantısı ekler. Ayrıca özel yazı türlerine de aynı şekilde bir Klon bağlantısı eklediğini de göreceksiniz. Bu da web sitenizin farklı alanlarını tek tıkla kopyalayabileceğiniz anlamına gelir!
Yapmanız gereken ise, çoğaltmak istediğiniz gönderinin/sayfanın altındaki Klonla bağlantısını tıklamak. Böylece otomatik olarak aynı içerik, başlık ve Taslak durumuna sahip yeni bir sayfa oluşturulacaktır.
2. Duplicate Page ile WordPress Sayfa/Yazı Kopyalama
Duplicate Page, tek tıklamayla Gönderi, Sayfa ve Özel Gönderileri kolayca kopyalamanıza olanak tanıyan bir diğer WordPress sayfa kopyalama eklentisidir.
Eklentiyi yükledikten sonra Gönderiler, Sayfalar ve özel gönderi türü yönetim ekranına Duplicate This (Bunu Çoğalt) şeklinde bir bağlantı eklenir. Bağlantıya tıkladığınızda orijinal gönderiyle aynı içeriğe ve başlığa sahip, Taslak durumunda yeni bir sayfa oluşur.
3. Duplicate Page and Post Eklentisiyle Sayfa Kopyalama
Duplicate Page and Post, WordPress sayfa kopyalama işlemi için kullanabileceğiniz bir diğer popüler eklentidir. Sayfaları, gönderileri ve özel gönderileri tek tıklamayla çoğaltabilirsiniz. Çoğaltılan sayfalar taslak olarak kaydedilir.
Eklentiyi kurup etkinleştirdikten sonra Tüm Sayfalar veya Tüm Yazılar bölümüne gidin. Kopyalamak istediğiniz yazının/sayfanın üzerine gelin ve Click here to clone butonuna tıklayın.
Çoğaltılan sayfayı dilediğiniz gibi düzenleyebilir ve ardından taslak olarak kaydedebilir veya direkt yayınlayabilirsiniz.
4. Yazıları/Sayfaları Toplu Olarak Çoğaltma Eklentisi
Bulk Post Duplicator, sayfaları tek tek çoğaltmak yerine, belirlediğiniz kriterlere göre toplu çoğaltma imkanı tanır. Ancak bu eklentinin uzun yıllardır güncelleme almadığını belirtmiş olalım. Kendi test sitemizde eklentiyi sorunsuz olarak yükleyip kullanabildik. Yine de canlı sitenize yüklemeden önce sizin de test etmenizi öneririz.
Eklentiyi yükledikten sonra Ayarlar > WP Bulk Post Duplicator seçeneğine gidin. Buradan, çoğaltmak istediğiniz gönderi türlerini seçin. Ardından sayfayı aşağı kaydırın ve çoğaltmak istediğiniz gönderilerin yılını seçin (isteğe bağlı). Oluşturulan yeni gönderilerin durumunu da belirleyebilirsiniz. Hiçbir şey seçmezseniz, varsayılan olarak Taslak şeklinde kopyalanacaktır. Çoğalt düğmesine tıkladığınızda eklenti seçiminize bağlı olarak toplu kopyalama işlemine başlar.
Eklentisiz WordPress Sayfa/Yazı Kopyalama
WordPress sayfa veya yazı kopyalama işlemini eklenti kullanmadan da gerçekleştirmeniz mümkün. Bunun nasıl yapılacağını aşağıda açıkladık, ancak bu işleme başlamadan önce her ihtimale karşı sitenizin bir yedeğini almanızı öneririz.
Yedekleme yaptıktan sonra aşağıdaki kodu temanızın functions.php dosyasına ekleyin.
/*
* 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 );
Bu kodları ekleyip dosyayı kaydettikten sonra “Tüm yazılar” bölümüne gidip imleci herhangi bir yazının üzerine getirdiğinizde “Dublicate” butonunun eklenmiş olduğunu göreceksiniz. Bu butona tıkladığınızda içeriğin bir kopyası oluşacak ve direkt kopyalanan sayfaya yönlendirileceksiniz. Gönderide dilediğiniz değişiklikleri yapıp yayınlayabilir ya da taslak olarak kaydedebilirsiniz.
Yukarıdaki kodlar yalnızca yazı kopyalamak içindi. Eğer sayfaları kopyalamak isterseniz, “add filter” ile başlayan son satırı aşağıdaki kod ile değiştirmeniz yeterli:
add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Ardından “Tüm Sayfalar” bölümüne gidip dilediğiniz sayfayı tek tıkla kopyalayabilirsiniz.
Eklenti ve eklentisiz WordPress sayfa kopyalama /çoğaltma yöntemlerini içeren kılavuzumuzun faydalı olacağını umuyoruz. Ayrıca “WordPress Taslaktaki Yazı Başlıklarını Dışa Aktarma” başlıklı kılavuzumuza da göz atmak isteyebilirsiniz.