تخفیف ویژه

آموزش کپی کردن برگه و نوشته در وردپرس

دسته بندی: وردپرس
زمان مطالعه: 8 دقیقه
۰۴ تیر ۱۳۹۹

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

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

آموزش کپی کردن برگه و نوشته در وردپرس با استفاده از افزونه

یکی از راه‌های تکثیر کردن برگه و نوشته‌ها در سایت‌های وردپرسی، استفاده از افزونه‌های موجود است. در ادامه با این افزونه‌ها آشنا می‌شویم.

افزونه کپی برگه وردپرس Duplicate Post

افزونه کپی برگه وردپرس Duplicate Post را نصب کنید. پس از نصب این افزونه، صفحه‌ی ویرایش نوشته یا برگه‌ی خود را باز کرده و روی لینک Copy to a new draft کلیک کنید. این کار باعث می‌شود نسخه‌ای المثنی از برگه یا نوشته‌ی شما در یک صفحه‌ی جدید ویرایش باز شود.کپی کردن برگه و نوشته در وردپرس

راه دیگر استفاده از این افزونه این است که به منوی نوشته ها > همه نوشته ها رفته و ماوس خود را روی عنوان نوشته یا برگه بیاورید. دو لینک جدید در اینجا وجود دارند: Clone و New Draft.

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

کلیک کردن روی Clone از نوشته یا برگه‌ی شما یک کپی، بدون باز کردن آن، تهیه می‌کند. و کلیک کردن روی New Draft از نوشته یا برگه شما یک کپی ایجاد کرده و آن را در داخل ویرایشگر وردپرس باز می‌کند.

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

افزونه کپی برگه وردپرس Duplicate Page and Post

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

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

جهت تنظیم گزینه‌های سفارشی‌سازی کپی، به بخش ابزارها » Post Duplicator رفته و وضعیت پست یا برگه(پیش نویس، منتشر شده) و زمان ارسال را مطابق با خواسته‌ی خود تنظیم کنید.

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

آموزش کپی کردن برگه و نوشته در وردپرس با استفاده از کدنویسی

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

برای این منظور می‌بایست قطعه کد زیر را به فایل functions.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 برای پست‌ها و برگه‌های شما فعال می‌شود.

مطالعه‌ی بیشتر:

جمع‌ بندی:

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

شما کدام یک از روش‌ها را ترجیح می‌دهید؟ نظرات و تجربیات خود را با ما به اشتراک بگذارید.

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

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

نظرات کاربران

amin

ممنون جال بود

حسین محمدی

ممنون از مطلب خوبتون…
این افزونه فقط از نوشته ها و برگه ها کپی می گیره؟؟؟

مهشاد کلانتری

خواهش میکنم
بله

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :