🎁 شروع برنامه نویسی را از ما هدیه بگیرید!
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۲ دیدگاه نظر نازنین گودرزی
آموزش کپی کردن برگه و نوشته در وردپرس
آموزش کپی کردن برگه و نوشته در وردپرس

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

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

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

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

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

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

جمع‌ بندی:

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

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

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

۱۲ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
Mehdi Binam ۰۸ آذر ۱۴۰۲، ۱۹:۵۹

خیلی عالی بود مقاله تون. ترفندهای بدون افزونه بیشتر بزارید تشکر🙏

۲۸ خرداد ۱۴۰۲، ۰۰:۵۴

عالی دمتون گرم باحال بود مرسی.......

۰۳ خرداد ۱۴۰۲، ۱۲:۰۵

سلام وقت بخیر برای دو زبانه کردن برگه جدید که ایجاد میکنم برگه اولی رو چطوری اونجا کپی کنم بعد نوشتار رو ادیت کنم ؟

نازنین کریمی مقدم ۲۸ خرداد ۱۴۰۲، ۰۶:۲۱

درود راه‌های زیادی داره یکیش اینه که از افزونه ای که در مقاله معرفی کردیم استفاده کنید.

۲۴ اردیبهشت ۱۴۰۲، ۰۵:۰۴

با سلام. با وار کردن این قطعه کد گزینه ای اضافه نگردید. لطفا راهنمایی بفرمایید برای حل مشکل چه کار باید انجام بدم. با تشکر

نازنین کریمی مقدم ۰۲ خرداد ۱۴۰۲، ۰۹:۰۰

درود برای اضافه کردن کد باید به وردپرس و مباحث قالب نویسی مسلط باشید. این کد مستقیم گزینه کپی برگه رو فعال میکنه. اگر درست عمل نمیکنه احتمالا در منطق کد چیزی رو فراموش کردید برنامه نویسی کنید.

۱۵ آذر ۱۴۰۱، ۱۱:۱۷

سلام من میخوام یک برگه رو از یک سایت کپی کنم توی یه سایت دیگه که به بک اند هر 2 تا سایت وردپرسی دسترسی دارم آیا قابل انجام هست ؟

نازنین کریمی مقدم ۱۵ آذر ۱۴۰۱، ۱۳:۲۳

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

۲۴ اردیبهشت ۱۴۰۱، ۱۷:۰۷

خیلی ممنونم واقعا به دردم خورد. کد رو با افزونه code snippets به راحتی میتونید به فانکشن اضافه کنید

amin ۱۱ دی ۱۳۹۲، ۰۹:۰۲

ممنون جال بود

حسین محمدی ۱۰ دی ۱۳۹۲، ۱۰:۵۵

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

مهشاد کلانتری ۱۰ دی ۱۳۹۲، ۱۵:۲۸

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

  • آموزش کپی کردن برگه و نوشته در وردپرس با استفاده از افزونه
  • آموزش کپی کردن برگه و نوشته در وردپرس با استفاده از کدنویسی
اشتراک گذاری مقاله در :