چگونه پست‌های وردپرس را Duplicate کنیم؟

5 / 5. تعداد رای: 1

نحوه کپی کردن یک صفحه یا پست در وردپرس
چگونه پست‌های وردپرس را Duplicate کنیم؟

کپی کردن محتوای سایت یا همان صفحات و پست‌ها، می‌تواند در موقعیت‌های بسیار زیادی به کمک شما بیاید. به‌عنوان‌مثال ممکن است شما بخواهید یکی از مطالب اصلی سایت خود را توسعه دهید، اگر تغییرات موردنظر خود را بر روی نسخه کپی شده از آن صفحه انجام دهید به‌مراتب بهتر است و مشکل خاصی برای شما پیش نخواهد آورد. یا اینکه ممکن است شما بخواهید طراحی کلی سایت خود را تغییر دهید، که در این صورت می‌توانید از این صفحات کپی شده به‌عنوان یک الگو برای پست‌های مرجع استفاده کنید.

در این مقاله ما به شما آموزش خواهیم داد که چگونه به‌راحتی یک کپی از صفحات و پست‌های سایت خود بگیرید. روش‌های مختلفی برای انجام این کار وجود دارد که ما در اینجا برای شما آن‌ها را شرح خواهیم داد و شما می‌توانید به‌دلخواه خود یکی را انتخاب کنید.

چگونه پست‌های وردپرس را Duplicate کنیم؟

به‌جرات می‌توان گفت ساده‌ترین روشی که می‌توان از آن برای کپی گرفتن از پست‌ها استفاده کرد، کمک گرفتن از یک پلاگین است. خوشبختانه وردپرس این امکان را به کاربران خود می‌دهد که با نصب یک افزونه و با چند کلیک، از صفحات سایت کپی بگیرند.

افزونه‌هایی که ما در این بخش برای شما معرفی می‌کنیم تماماً رایگان هستند و شما می‌توانید با کلیک کردن روی اسم این افزونه‌ها، آن‌ها را دانلود و بر روی سایت خود نصب نمایید و یا اینکه از طریق مخزن وردپرس به‌راحتی این پلاگین‌ها را دریافت و فعال کنید.

برای نصب این افزونه‌‌ها نیز می‌‌توانید از راهنمایی‌‌های ما در مقاله نصب افزونه در وردپرس استفاده کنید.

معرفی پلاگین Duplicate Post

افزونه Duplicate Post یکی از قوی‌ترین و بهترین افزونه‌هایی است که تاکنون بالغ‌بر 3 میلیون نصب فعال داشته است. این افزونه نه تنها به شما قابلیت این را می‌دهد که از صفحات سایت خود کپی‌برداری کنید بلکه می‌توانید از نظرات و منوها نیز کپی بگیرید.

دانلود افزونه Duplicate Post
دانلود افزونه Duplicate Post

همچنین شما با این افزونه دیگر نیازی ندارید نگران اشتباه گرفتن نسخه اصلی با نسخه کپی باشید، چراکه این افزونه به شما این امکان را می‌‌دهد که برای نسخه‌‌های مختلف، پیشوند یا پسوند قرار دهید.

آموزش کار با افزونه Duplicate Post

خب بعدازاینکه شما این افزونه را نصب و فعال کردید، باید به پیشخوان وردپرس خود بروید. اگر می‌خواهید از تمامی پست‌ها کپی‌برداری کنید باید نوشته‌ها» همه نوشته‌ها را انتخاب کنید و در غیر این صورت بر روی پست موردنظر خود اسکرول کنید.

اگر بر روی نوشته موردنظر خود اسکرول کنید، می‌توانید دو گزینه جدید “تکرار” و “پیش‌نویس تازه” را مشاهده نمایید. هر دو این گزینه‌ها یک نسخه کپی‌برداری شده در اختیار شما قرار خواهد داد با این تفاوت که با انتخاب “پیش‌نویس تازه”، پست موردنظر شما در یک پیش‌نویس جداگانه کپی خواهد شد.

کپی کردن یک نوشته در وردپرس
کپی کردن یک نوشته در وردپرس

معرفی افزونه Duplicate Page and Post

شما با استفاده از افزونه Duplicate Page and Post قادر خواهید بود بدون اینکه در پست‌‌ها و صفحات سایت خود تغییری ایجاد کنید، یک نسخه کپی شده از آن را در اختیار داشته باشید. برخی از مهم‌‌ترین ویژگی‌‌های این افزونه کارکرد آسان، امکان کپ کردن از یک پست خاص، امکان انتخاب ویرایشگر کلاسیک یا گوتنبرگ و … است.

شما این امکان را دارید که برای لینک پست کپی شده، یک متن دلخواه قرار دهید، همچنین گزینه‌هایی برای ریدایرک کردن پست موردنظر در اختیار شما قرار خواهد گرفت.

افزونه Duplicate Page and Post
افزونه Duplicate Page and Post

این افزونه تاکنون بیش از 40 هزار نصب فعال داشته است و امکانات بی‌نظیری را در اختیار شما قرار خواهد داد.

آموزش کپی کردن صفحات با افزونه Duplicate Page and Post

پس از فعال کردن افزونه، یک گزینه بانام همین افزونه به پیشخوان شما اضافه خواهد شد که شما با کلیک کردن بر روی آن می‌توانید به تنظیمات افزونه بروید. از قسمت تنظیمات، امکان این را دارید که ویرایشگر موردنظر خود را وارد کنید، ویرایشگر پیش‌فرض این افزونه کلاسیک است.

بعدازاینکه تنظیمات موردنظر خود را وارد کردید، حتماً بر روی “Save Changes” کلیک کنید تا تغییرات اعمال شوند.

تنظیمات پلاگین  افزونه  Duplicate Page and Post
تنظیمات پلاگین افزونه Duplicate Page and Post

کارکرد این افزونه تقریباً مطابق با مورد قبلی است. بعد از نصب و فعال کردن این پلاگین باید به پیشخوان» همه نوشته‌ها بروید و تمامی نوشته‌ها یا یکی از آن‌ها را انتخاب نمایید.

همان‌طور که مشاهده می‌کنید به نوشته‌های شما گزینه “Duplicate” اضافه شده است و شما برای کپی کردن نوشته‌ها تنها کاری که باید انجام دهید این است که بر روی آن گزینه کلیک کنید.

پس از کلیک کردن بر روی گزینه گفته‌شده، یک نسخه کپی شده با اسم مشابه نسخه اصلی مشاهده خواهید کرد که به‌راحتی می‌توانید آن را ویرایش کنید و محتوای آن را تغییر دهید.

افزونه Post Duplicator

این افزونه به شما این امکان را می‌دهد که یک نسخه کپی شده دقیقاً مانند پست اصلی با تمامی سفارشی‌سازی‌هایی که بر روی آن اعمال‌شده است داشته باشید.

شما با پلاگین Post Duplicator قادر خواهید بود به‌‌راحتی و در کمتر از چند ثانیه از پست‌‌ها و صفحات سایت خود کپی بگیرید.

این افزونه به شما این امکان را می‌دهد که یک سری تنظیمات خاص را برای نسخه‌هایی که کپی کرده‌اید اعمال کنید، به‌عنوان‌مثال شما می‌توانید نوع، تاریخ، وضعیت پست ( پیش‌نویس یا منتشرشده)، عنوان و بسیاری موارد دیگر را تغییر دهید.

پس‌ازاینکه این افزونه را فعال کردید می‌توانید با رفتن به قسمت نوشته‌ها در پیشخوان لوکال هاست خود، مشاهده کنید که گزینه “Duplicate نوشته” به نوشته‌های شما اضافه‌شده است.

کپی کردن نوشته
کپی کردن نوشته

کپی کردن پست‌های وردپرس بدون نیاز به نصب افزونه

راه‌حل دومی که شما می‌توانید از آن برای کپی کردن صفحات یا پست‌های سایت خود استفاده کنید، استفاده از کد می‌باشد. شما با استفاده از قطعه کدی که در اینجا برایتان قرار داده‌ایم، قادر خواهید بود از تمامی پست‌ها و صفحات در وردپرس، کپی‌برداری کنید.

البته این نکته را به یاد داشته باشید که کد زیر تنها برای پست‌‌ها کاربرد دارد.

شما باید این کدها را در فایل function.php اضافه کنید. ابزارهای زیادی هستند که برای ویرایش این فایل به شما کمک می‌کنند، ازجمله آن‌ها می‌توان به File Manager و FTP client اشاره نمود.

شما به‌راحتی قادر هستید با وارد شدن به پیشخوان» نمایش» ویرایش پوسته، فایل function.php را پیدا کنید و این کدها را به آن اضافه نمایید.

/*
 * 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 );

همچنین کد زیر به شما برای کپی کردن صفحات در وردپرس کمک خواهد کرد:

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

خب الآن تنها کاری که شما باید انجام دهید این است که از اعمال این کدها در سایتتان اطمینان حاصل کنید، برای این کار باید وارد نوشته‌های سایت شوید، اگر گزینه Duplicate به پست‌ها اضافه شده باشد به این معنی است که شما موفق شدید به‌درستی کد را جایگذاری کنید.

امیدواریم این مقاله برای شما مفید واقع شده باشد.موفق و سربلند باشید:)

نظر شما در این مورد چیه؟

  1. U38669 ۲۳ خرداد ۱۴۰۰

    سلام من به جای افزونه all in one wp migration میتونم از کدوم افزونه داپلیکیتور استفاده کنم؟

  2. کاربر مهمان ۱۵ آذر ۱۳۹۸

    سلام و وقت بخیر، ای کد کجای فایل فانکشن باید قرار بگیرد که برای دیگر کدها مشکلی ایجاد نشود