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

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

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

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

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

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

جمع‌ بندی:

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

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

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

منبع : سون لرن





اخبار زردیس | جدیدترین اخبار ایران و جهان