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

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

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

افزونه محبوب Duplicate Page and Post به شما امکان می‌دهد تا با یک کلیک، نوشته‌ها، برگه‌ها، دسته‌بندی‌ها، برچسب‌ها و انواع پست‌های سفارشی را کپی کنید.

ابتدا به داشبورد سایت بروید و از قسمت افزونه‌ها Duplicate Page and Post را نصب و فعال کنید.

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

کپی و جاگذاری همه محتوای صفحه

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

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

اکنون یک صفحه یا نوشته جدید بسازید و در یک بلوک پاراگراف دکمه Ctrl + v را بزنید تا محتوای پیج قبلی در اینجا جایگذاری شود.

کپی صفحه در وردپرس به کمک کد سفارشی

کد زیر را در وب‌سایت خود قرار دهید.

برای قرار دادن کد سفارشی در سایت‌های وردپرسی از سه روش زیر می‌توانید استفاده کنید:

  • قرار دادن کد در فایل functions.php تم فرزند
  • استفاده از پلاگین‌های کمکی مانند code snippets
  • ساخت پلاگین اختصاصی خود

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

نمایش کد
add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'rd_duplicate_post_link', 10, 2 );
function rd_duplicate_post_link( $actions, $post ) {

	if( ! current_user_can( 'edit_posts' ) ) {
		return $actions;
	}

	$url = wp_nonce_url(
		add_query_arg(
			array(
				'action' => 'rd_duplicate_post_as_draft',
				'post' => $post->ID,
			),
			'admin.php'
		),
		basename(__FILE__),
		'duplicate_nonce'
	);

	$actions[ 'duplicate' ] = '<a href="' . $url . '" title="Duplicate this item" rel="permalink">Duplicate</a>';

	return $actions;
}

add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' );

function rd_duplicate_post_as_draft(){

	// check if post ID has been provided and action
	if ( empty( $_GET[ 'post' ] ) ) {
		wp_die( 'No post to duplicate has been provided!' );
	}

	// Nonce verification
	if ( ! isset( $_GET[ 'duplicate_nonce' ] ) || ! wp_verify_nonce( $_GET[ 'duplicate_nonce' ], basename( __FILE__ ) ) ) {
		return;
	}

	// Get the original post id
	$post_id = absint( $_GET[ '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 (I am sure it is, but just in a case), create the post duplicate
	if ( $post ) {

		// 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
		);
		$new_post_id = wp_insert_post( $args );
		$taxonomies = get_object_taxonomies( get_post_type( $post ) ); // returns array of taxonomy names for post type, ex array("category", "post_tag");
		if( $taxonomies ) {
			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
		$post_meta = get_post_meta( $post_id );
		if( $post_meta ) {

			foreach ( $post_meta as $meta_key => $meta_values ) {

				if( '_wp_old_slug' == $meta_key ) { // do nothing for this meta key
					continue;
				}

				foreach ( $meta_values as $meta_value ) {
					add_post_meta( $new_post_id, $meta_key, $meta_value );
				}
			}
		}

		wp_safe_redirect(
			add_query_arg(
				array(
					'post_type' => ( 'post' !== get_post_type( $post ) ? get_post_type( $post ) : false ),
					'saved' => 'post_duplication_created' // just a custom slug here
				),
				admin_url( 'edit.php' )
			)
		);
		exit;

	} else {
		wp_die( 'Post creation failed, could not find original post.' );
	}

}

add_action( 'admin_notices', 'rudr_duplication_admin_notice' );

function rudr_duplication_admin_notice() {

	// Get the current screen
	$screen = get_current_screen();

	if ( 'edit' !== $screen->base ) {
		return;
	}

    //Checks if settings updated
    if ( isset( $_GET[ 'saved' ] ) && 'post_duplication_created' == $_GET[ 'saved' ] ) {

		 echo '<div class="notice notice-success is-dismissible"><p>Post copy created.</p></div>';
		 
    }
}

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

مقالات مشابه

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

آموزش ساخت اسلایدر محصولات ووکامرس بدون پلاگین

آموزش اتصال وردپرس به گوگل شیت برای ذخیره فرم‌ها

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

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

افزونه کشف قیمت

افزونه برورسانی اتوماتیک قیمت از سایتهای دیگر

دانلود رادار قیمت