Tags
Links

Elementor Pro

CrocoBlock

Duplicate Page

ניווט מהיר

שכפול עמודים ופוסטים בוורדפרס

שכפול עמודים ופוסטים בוורדפרס

אין מפתח אתרים שתוהה מדוע וורדפרס לא מוסיפים אפשרות שכפול לעמודים או פוסטים, הרי זה דבר נצרך באופן ברור. אז קחו שתי דרכים לעשות את זה בעצמכם
מתאר יצירת שכפול עמודים בוורדפרס

מקור התוכן בהדרכה זו הוא מאתר savvy שבין היתר מוסיפים בבלוג המדהים שלהם הדרכות מעולות על תוספות מיוחדות בקוד לחצו לקישור ישיר להדרכה

The source of the content in this guide is from the website Savvy, who, among other things, add excellent tutorials on special additions to the code in their amazing blog. Click for a direct link to the tutorial

שכפול עמודים ופוסטים ע"י תוסף

אם אתם לא בשביל קוד, או שמפחדים לשבש משהו באתר שלכם (אגב, אין ממה לחשוש) אז ישנו תוסף וורדפרס מעולה שיעשה לכם את העבודה ולאחר שתתקינו אותו, יתווסף לכם בעמודים ובפוסטים ובעצם בכל מערכות ה CPT באתר, את האפשרות שכפול.

הוראות

אין הוראות. חפשו את Duplicate Page בתוספים בוורדפרס ותתקינו,,, זהו. (קישור לעמוד התוסף בלינקים קשורים בצד שמאל או למטה במובייל)

שכפול עמודים ופוסטים ע"י הוספת קוד PHP

אבל אם בכל אופן, בא לכם טיפה לשחק בקוד, אז נביא לכם דרך נוספת וללא תוסף מיותר למערכת. אז כמילות המקור מאתר savvy "לא נבזבז מילים, הנה הקוד שיש להוסיף לקובץ functions.php.

				
					/*
 * פונקציה שיוצרת כפילות של פוסט כטיוטה ולאחר מכן מפנה למסך עריכת הפוסט
 */
function sv_duplicate_post_as_draft() {
	global $wpdb;
	if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && 'sv_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_sv_duplicate_post_as_draft', 'sv_duplicate_post_as_draft' );

/*
 * Add the duplicate link to action list for post_row_actions
 */
function sv_duplicate_post_link( $actions, $post ) {
	if (current_user_can('edit_posts')) {
		$actions['duplicate'] = '<a href="' . wp_nonce_url('admin.php?action=sv_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="שכפול פוסט" rel="permalink">שכפול</a>';
	}
	return $actions;
}

add_filter( 'post_row_actions', 'sv_duplicate_post_link', 10, 2 );

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

הקוד הזה בעצם יוסיף לכם את אפשרות השכפול פוסט או עמוד. לאחר שתשכפלו הוא יצור עמוד טיוטה ויפתח את העמוד בתצוגת עריכה כך שתוכלו ישירות לגשת לעניינים ולערוך את הפוסט קודם שתפרסמו.

אם אתם מעוניינים שלאחר השכפול תישארו בעמוד שאתם נמצאים בו מבלי שיעביר אתכם לעמוד העריכה, תחליפו את שורות 90 עד 94 (כולל) בשורות האלו.

				
					/*
 * finally, redirect back to the list of posts
 */
wp_redirect( admin_url( 'edit.php?post_type=' . $post->post_type ) );
exit;

				
			

אז תהנו.. ותגידו תודה לתותחים מ savvy

0 0 votes
דירוג מאמר
Subscribe
Notify of
guest
0 הערות
Inline Feedbacks
View all comments
מדריכים ומאמרים קשורים
eliko.web.studio
מפתחי ומעצבי אתרים צריכים המון פעמים אייקוני אימוג'י שונים. והפתרונות הם אפליקציות למיניהם.. אז לא עוד מבחר אימוג'י בשיטת העתק הדבק בלבד
eliko.web.studio
מדריך מהי מפת אתר ולמה זה חשוב לאתר שלך ואיך זה משפר קידום אתרים והכי חשוב איך תיצרו אחת כזו בוורדפרס.
LEMON
גם לכם נמאס מהבאג באלמנטור שמוסיף רווח מיותר בווידג'ט "עורך הטקסט"? ככה תסירו אותו פעם אחת בכל האתר | קוד CSS
eliko.web.studio
רוצים לבצע SEO לבד? אם אתם לא מעוניינים לשלם אלפי שקלים בחודש ואתם מוכנים ליצירת קידום אורגני לאתר שלכם באופן מדוייק עבור מנועי החיפוש, זה המדריך המלא עבורכם,, אז בהצלחה..
wicky design
איך תוסיפו סרטון וידאו שבמעבר עכבר מעליו הוא מתחיל לנגן (ללא שמע) ובהסרת העכבר הוידאו נעצר
Farjana Rashid
מדריך מהיר וקצר, איך להפוך את צבע הכותרת שלך לצבע הדרגתי באלמנטור. רק קוד CSS והכותרת שלך משודרגת

תודה שאישרת את הצעת המחיר!

לא צויין כתובת מייל

סך תשלום ראשון (מקדמה) 30% מסכום העסקה הינו:

בפרוייקטים של עיצוב גרפי או/ו פרוייקטים שלא עולים מעל לסכום של 2000₪, התשלום לא יתחלק לפעימות אלא התשלום יושלם בפעימה ראשונה או יתחלק לשתי פעימות על פי הסיכום בטלפון או בהודעות

העברה בנקאית

בנק – ONE ZERO (18)
סניף – ראשי (001)
חשבון – 202003116
ע"ש – אליהו כהן

תשלום באפליקציות

bit/PayBox
במספר טלפון 0503528688