كيفية تكرار صفحة أو مشاركة في WordPress

نشرت: 2021-08-26

هل تبحث عن طريقة لتكرار صفحة WordPress أو منشور أو أي نوع آخر من المحتوى؟

يمكن أن تكون القدرة على تكرار محتوى WordPress بسهولة مفيدة في جميع أنواع المواقف ، بدءًا من إنشاء محتوى مشابه بشكل مجمّع إلى تحديث المحتوى الأقدم إلى تعديل التصميم وغير ذلك الكثير.

ومع ذلك ، في كثير من الحالات ، يتعلق الأمر بأكثر من مجرد نسخ النص ولصقه بين الصفحات المختلفة. بالإضافة إلى المحتوى الذي قمت بإنشائه ، قد ترغب أيضًا في الحفاظ على تصميمه وإعدادات المنشور ، مثل الفئات والعلامات والمؤلف والحقول المخصصة والبيانات الوصفية الأخرى.

في هذا المنشور ، سنقدم لك دليلًا شاملاً لكيفية تكرار صفحة WordPress بالكامل ، ونشرها ، والمزيد باستخدام حلول مجانية بنسبة 100٪.

في النهاية ، ستتمكن من نسخ أي محتوى على موقعك بنقرة زر واحدة - فلنبدأ.

جدول المحتويات

  • كيفية تكرار منشور أو صفحة في WordPress: ثلاث طرق
  • كيفية تكرار صفحة WordPress باستخدام البرنامج المساعد
  • Yoast مشاركة مكررة
  • مشاركة مكررة
  • كتب مريم الدخيل لاكاديمية الثراء
  • كيفية تكرار صفحة ووردبريس باستخدام المحرر
  • محرر الكتل (جوتنبرج)
  • العنصر
  • كيفية تكرار صفحة WordPress يدويًا باستخدام الكود
تسريع عملية إنشاء الويب بشكل أكبر باستخدام مجموعات مواقع الويب الكاملة

كيفية تكرار منشور أو صفحة في WordPress: ثلاث طرق

هناك ثلاث طرق رئيسية يمكنك استخدامها لتكرار صفحة WordPress أو منشور أو أي نوع منشور مخصص آخر:

  • البرنامج المساعد - أسهل طريقة لتكرار منشور أو صفحة هي استخدام أحد الإضافات المخصصة العديدة (ومعظمها مجاني).
  • المحرر - بناءً على مدى رغبتك في تكرار المحتوى ، قد تتمكن من استخدام المحرر فقط إذا كنت تهتم فقط بنسخ المحتوى والتصميم.
  • الكود اليدوي - بالنسبة إلى الأشخاص الذين يقومون بذلك بنفسك ، يمكنك فقط إضافة بعض التعليمات البرمجية المخصصة إلى ملف function.php الخاص بالقالب الخاص بك.

سنغطي جميع الطرق الثلاثة - فلنستعرضها ...

كيفية تكرار صفحة WordPress باستخدام البرنامج المساعد

هناك الكثير من المكونات الإضافية التي تجعل من السهل تكرار المنشورات أو الصفحات أو أي محتوى آخر على موقعك.

إذا كان لديك متجر WooCommerce ، فإن WooCommerce يتضمن ميزته المضمنة لتكرار المنتجات - المزيد عن ذلك أدناه. وإذا لم تقم بذلك ، فستجد الكثير من المكونات الإضافية المجانية على WordPress.org ، بما في ذلك ما يلي:

  • Yoast مشاركة مكررة
  • مشاركة مكررة
  • صفحة مكررة
  • آلة النسخ
  • صفحة مكررة ومشارك

بالإضافة إلى WooCommerce ، سنوضح لك كيف يعمل مع اثنين من المكونات الإضافية المجانية من القائمة أعلاه:

  • Yoast Duplicate Post لأنه سهل الاستخدام للغاية ويتضمن ميزة "إعادة الكتابة وإعادة النشر " الفريدة التي تعد رائعة لتحديث المحتوى الحالي.
  • منشور مكرر لأنه يمنحك مزيدًا من التحكم الدقيق في بعض المناطق.

كلا المكونين الإضافيين مجانيان وقمنا أيضًا باختبار كليهما للتأكد من أنهما يعملان مع تصميمات Elementor والمحتوى الذي تم إنشاؤه باستخدام محرر WordPress الأصلي. نتخيل أن جميع المكونات الإضافية الأخرى من الأعلى ستعمل أيضًا مع Elementor ، على الرغم من أننا لم نختبرها على وجه التحديد.

Yoast مشاركة مكررة

أولاً ، دعنا نلقي نظرة على Yoast Duplicate Post. يعد هذا المكون الإضافي رائعًا إذا كنت تريد فقط طريقة سريعة وسهلة لتكرار المنشورات أو الصفحات أو أي نوع منشور مخصص آخر.

بالإضافة إلى السماح لك باستنساخ المحتوى ، فإنه يتضمن أيضًا ميزة إعادة الكتابة وإعادة النشر الفريدة التي تساعدك في تحديث المحتوى الحالي. بشكل أساسي ، تتيح لك هذه الميزة نسخ المحتوى لإجراء تغييرات ثم "دمج" النسخة المكررة مرة أخرى في الإصدار الأصلي عندما تريد إجراء التغييرات مباشرة.

للبدء ، قم بتثبيت وتنشيط المكون الإضافي المجاني Yoast Duplicate Post من WordPress.org.

الآن ، لديك عدة طرق مختلفة لتكرار المحتوى.

أولا، يمكنك الذهاب إلى المشاركات أو صفحات القائمة الرئيسية. إذا قمت بالمرور فوق عنصر في القائمة ، فسترى ثلاثة خيارات:

  • استنساخ - قم بتكرار المحتوى واحتفظ بعلامة تبويب المتصفح في قائمة المنشورات / الصفحات.
  • مسودة جديدة - قم بتكرار المحتوى وافتح المحرر للمحتوى المكرر حتى تتمكن من بدء العمل على الفور.
  • إعادة الكتابة وإعادة النشر - هذه ميزة مفيدة لتحديث المحتوى القديم ، كما ناقشنا أعلاه. الاختلاف الرئيسي هو أنه سيسمح لك بدمج المحتوى مرة أخرى في المنشور الأصلي بمجرد الانتهاء.
مكررة الصفحة 1 خيارات في قائمة الصفحات

أبسط طريقة هي النقر فوق Clone . بعد ذلك ، سترى إدخال مسودة جديد للمحتوى المكرر يظهر في القائمة. سيقوم المكون الإضافي بتمييزه بإشعار "مسودة التخصيص" لإعلامك بأنه الإصدار المكرر:

ثانيًا ، يمكنك أيضًا نسخ المحتوى من داخل محرر WordPress. ستجد هذه الخيارات في قسم " الحالة والرؤية" في الشريط الجانبي للنشر / الصفحة :

وأخيرا، يمكنك أيضا يتناولن المشاركات المكررة أو صفحات باستخدام خيارات البرنامج المساعد في الإجراءات الأكبر المنسدلة من قائمة المشاركات أو الصفحات:

  1. استخدم مربع الاختيار لتحديد كل المنشورات أو الصفحات التي تريد تكرارها.
  2. اختر طريقة النسخ من القائمة المنسدلة - استنساخ أو إعادة كتابة وإعادة النشر .
  3. انقر فوق تطبيق .

إذا كنت ترغب في تخصيص سلوك المكون الإضافي ، يمكنك الانتقال إلى Settings → Duplicate Post . تتيح لك هذه المنطقة:

  • اختر المحتوى المراد نسخه.
  • أضف بادئة أو لاحقة مخصصة إلى عنوان المحتوى المكرر.
  • اختر كيفية طلب محتوى مكرر في القائمة.
  • حدد أنواع المنشورات التي تجعلها مؤهلة للنسخ.
  • اختر أدوار المستخدم التي لديها القدرة على تكرار المحتوى.
  • تخصيص مكان عرض روابط / أزرار المنشور المكرر.
صفحة 5-yoast-مكررة-post-settings-area

مشاركة مكررة

يخدم Duplicate Post نفس الوظيفة الأساسية مثل Yoast Duplicate Post حيث أنه يجعل من السهل نسخ منشور أو صفحة بسرعة.

بعض مزايا هذا المكون الإضافي على Yoast Duplicate Post هي أنه:

  1. يتيح لك تكرار منشور / صفحة عدة مرات بنقرة واحدة. على سبيل المثال ، يمكنك إخباره بإنشاء أربع نسخ مكررة.
  2. يمنحك مزيدًا من التحكم في المحتوى الذي تنسخه بين المنشورات.
  3. يتضمن ميزة لفحص موقعك بحثًا عن محتوى مكرر ، وهو أمر مفيد للعثور على التكرارات بسرعة.
  4. يتيح لك نسخ المحتوى بين مختلف مواقع شبكة WordPress متعددة المواقع ، بما في ذلك تلك الموجودة على نطاق فرعي (على الرغم من أن هذه الميزة تتطلب المكون الإضافي المتميز بقيمة 19.98 دولارًا).
  5. يمنحك خيارًا لتحويل المشاركات إلى صفحات والعكس صحيح (يتطلب أيضًا الإصدار المتميز).

إذا لم تكن بحاجة إلى هذه الميزات ، فإننا نوصي بالالتزام بـ Yoast Duplicate Post لأنه أكثر شيوعًا وينجز المهمة. ولكن إذا كنت تريد هذه الميزات ، فهذا خيار قوي آخر يجب مراعاته.

للبدء ، قم بتثبيت وتنشيط المكون الإضافي المجاني Duplicate Post من WordPress.org. بمجرد تنشيطه ، سيبدأ العمل.

انتقل إلى قائمة المنشورات / الصفحات وقم بالتمرير فوق جزء المحتوى الذي تريد تكراره. سترى خيارًا جديدًا للنسخ . إذا قمت بالمرور فوق ذلك ، فسوف تقوم بتوسيع بعض الإعدادات الإضافية لاختيار عدد التكرارات التي تريد إجراؤها والإعدادات التي يجب استخدامها (المزيد حول تلك الإعدادات في ثانية):

مكررة الصفحة 6 مكررة بعد البرنامج المساعد

كما هو الحال مع Yoast Duplicate Post ، يمكنك أيضًا استخدام مربعات الاختيار والقائمة المنسدلة للإجراءات المجمعة لنسخ مشاركات متعددة بشكل مجمّع.

لتكوين إعدادات المكون الإضافي ، يمكنك الانتقال إلى علامة التبويب نسخ وحذف المنشورات الجديدة في لوحة معلومات WordPress الخاصة بك. هذا هو المكان الذي يمكنك فيه تكوين جميع الإعدادات بما في ذلك:

  • ما هو المحتوى المكرر.
  • من يمكنه تكرار المحتوى.
  • ما أنواع المنشورات المخصصة لتمكين التكرار لها.
  • إلخ.

شيء جميل هو أنه يمكنك إنشاء ملفات تعريف إعدادات متعددة واختيار التكوين الذي تريد استخدامه عند تكرار المحتوى.

إذا قمت بالتمرير إلى الجزء السفلي من منطقة الإعدادات ، فيمكنك أيضًا العثور على الميزة للبحث عن المحتوى المكرر على موقعك:

مرة أخرى ، إذا كنت تريد فقط طريقة بسيطة لنسخ المحتوى ، فنحن نوصي بالالتزام بالمكوّن الإضافي Yoast Duplicate Post. ولكن إذا لفت انتباهك أي من هذه الميزات ، فإن Duplicate Post يعمل أيضًا بشكل جيد.

كتب مريم الدخيل لاكاديمية الثراء

إذا كنت تستخدم WooCommerce لإنشاء متجر للتجارة الإلكترونية ، فإن WooCommerce يتضمن ميزة مضمنة خاصة به لتكرار المنتجات - لا حاجة لتثبيت مكون إضافي منفصل.

لتكرار منتج ، انتقل إلى منطقة المنتجات في لوحة المعلومات. بعد ذلك ، مرر مؤشر الماوس فوق المنتج الذي تريد تكراره وانقر فوق تكرار :

يمكنك أيضًا نسخ منتج من داخل محرر المنتج بالنقر فوق الخيار نسخ إلى مسودة جديدة ضمن إعدادات النشر :

ملاحظة - هذه الخيارات تظهر فقط على المنتجات. إذا كنت ترغب في تكرار المنشورات والصفحات ، فستحتاج إلى تثبيت أحد المكونات الإضافية من الأعلى.

كيفية تكرار صفحة ووردبريس باستخدام المحرر

إذا كنت مهتمًا بشكل أساسي بتكرار محتوى / تصميم منشور أو صفحة ، فقد تكون بخير بدون مكون إضافي بفضل بعض ميزات المحرر المضمنة.

في هذا القسم ، سنوضح لك كيفية تكرار التصميم الذي أنشأته بسرعة باستخدام محرر الكتلة الأصلي (Gutenberg) أو Elementor.

من المهم ملاحظة أن كلتا الطريقتين لن تؤدي إلا إلى تكرار المحتوى والتصميم - ستحتاج إلى إعادة إنشاء أي بيانات وصفية مهمة يدويًا ، مثل العنوان ، والفئات ، والعلامات ، والحقول المخصصة ، إلخ.

محرر الكتل (جوتنبرج)

لتكرار المحتوى بسرعة من محرر الكتلة ، ابدأ بفتح محرر المنشور أو الصفحة التي تريد تكرارها.

انقر فوق أيقونة النقاط الثلاث في الزاوية العلوية اليمنى لتوسيع القائمة. بعد ذلك ، حدد خيار نسخ كل المحتوى :

مكررة الصفحة 11 مكررة المحتوى جوتنبرج

الآن ، قم بإنشاء منشور أو صفحة جديدة. ثم ، انقر فوق المحرر والصق المحتوى. يمكنك إما:

  • استخدم اختصار لوحة مفاتيح مثل Ctrl + V أو Cmd + V.
  • انقر بزر الماوس الأيمن واختر لصق.

يجب أن تشاهد نسخة طبق الأصل من المحتوى الأصلي في المحرر. ومع ذلك ، ستحتاج إلى التأكد من إضافة العنوان والفئات والعلامات يدويًا وما إلى ذلك.

العنصر

ملاحظة - يمكنك تكرار الصفحات أو المنشورات التي تم إنشاؤها باستخدام Elementor باستخدام المكونات الإضافية التي ذكرناها أعلاه. ولكن إذا كنت مهتمًا بشكل أساسي بتكرار تصميم منشور / صفحة Elementor (بدلاً من البيانات الوصفية الأخرى مثل المؤلف والفئات) ، فيمكنك القيام بذلك باستخدام نظام قوالب Elementor.

لدينا دليل حول كيفية تكرار صفحة Elementor ، ولكن إليك الفكرة الأساسية.

أولاً ، يمكنك حفظ تصميمك كقالب من واجهة محرر Elementor:

قالب مكرر للصفحة 12 عنصر

بعد ذلك ، يمكنك إنشاء منشور أو صفحة جديدة وإدراج القالب من مكتبة قوالب Elementor.

إذا كنت تريد تكرار أكثر من مجرد صفحة واحدة ، فيمكنك أيضًا استخدام ميزة مجموعات موقع Elementor لتصدير / استيراد تصميمات مواقع الويب الكاملة.

قم بتكرار تصميم موقع الويب الكامل الخاص بك عن طريق استيراد مجموعة أدوات موقع الويب الخاصة بك

تتيح لك ميزة استيراد / تصدير Elementor استيراد إبداعاتك الخاصة وإنشاء موقع ويب جديد في ثوانٍ. ما عليك سوى إنشاء مخطط يمكن استخدامه لمشاريع متعددة ، أو إعادة استخدام إنشاء الويب المفضل لديك. بعد ذلك ، قم بتصدير موقع الويب بالكامل وتطبيقه على مشاريعك الأخرى.

يمكنك استخدام التصميم الخاص بك أو الاختيار من مكتبة مجموعات مواقع الويب التي صممها المصممون لدينا. ما عليك سوى تطبيقه على موقع الويب الخاص بك وإضافة المحتوى وجعله خاصًا بك.

كيفية تكرار صفحة WordPress يدويًا باستخدام الكود

إذا كنت تفضل نهج افعل ذلك بنفسك (DIY) ، فيمكنك أيضًا إنشاء وظيفة الصفحة المكررة الخاصة بك باستخدام بعض التعليمات البرمجية المخصصة. لا تضيف هذه الطريقة أي فائدة على مسار المكون الإضافي بخلاف التخلص من الحاجة إلى تثبيت مكون إضافي آخر على موقعك.

ومع ذلك ، إذا كان تجنب مكون إضافي آخر أمرًا مهمًا بالنسبة لك ، فإن هذا الأسلوب جيد وسيعمل مع محتوى المحرر العادي والعنصر.

لاستخدام هذا الرمز ، تحتاج إلى إضافته إما إلى ملف function.php الخاص بالقالب الخاص بك أو البرنامج المساعد لإدارة التعليمات البرمجية مثل Code Snippets. إذا كنت إضافته إلى ملف functions.php، تأكد من استخدام موضوع الطفل.

 <?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'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 ); <code readonly="true">&lt;?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[&#39;post&#39;]) || isset( $_POST[&#39;post&#39;]) || ( isset($_REQUEST[&#39;action&#39;]) &amp;&amp; &#39;rd_duplicate_post_as_draft&#39; == $_REQUEST[&#39;action&#39;] ) ) ) { wp_die(&#39;No post to duplicate has been supplied!&#39;); } /* * Nonce verification */ if ( !isset( $_GET[&#39;duplicate_nonce&#39;] ) || !wp_verify_nonce( $_GET[&#39;duplicate_nonce&#39;], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET[&#39;post&#39;]) ? absint( $_GET[&#39;post&#39;] ) : absint( $_POST[&#39;post&#39;] ) ); /* * and all the original post data then */ $post = get_post( $post_id ); /* * if you don&#39;t want current user to be the new post author, * then change next couple of lines to this: $new_post_author = $post-&gt;post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user-&gt;ID; /* * if post data exists, create the post duplicate */ if (isset( $post ) &amp;&amp; $post != null) { /* * new post data array */ $args = array( &#39;comment_status&#39; =&gt; $post-&gt;comment_status, &#39;ping_status&#39; =&gt; $post-&gt;ping_status, &#39;post_author&#39; =&gt; $new_post_author, &#39;post_content&#39; =&gt; $post-&gt;post_content, &#39;post_excerpt&#39; =&gt; $post-&gt;post_excerpt, &#39;post_name&#39; =&gt; $post-&gt;post_name, &#39;post_parent&#39; =&gt; $post-&gt;post_parent, &#39;post_password&#39; =&gt; $post-&gt;post_password, &#39;post_status&#39; =&gt; &#39;draft&#39;, &#39;post_title&#39; =&gt; $post-&gt;post_title, &#39;post_type&#39; =&gt; $post-&gt;post_type, &#39;to_ping&#39; =&gt; $post-&gt;to_ping, &#39;menu_order&#39; =&gt; $post-&gt;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-&gt;post_type); // returns array of taxonomy names for post type, ex array(&quot;category&quot;, &quot;post_tag&quot;); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array(&#39;fields&#39; =&gt; &#39;slugs&#39;)); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb-&gt;get_results(&quot;SELECT meta_key, meta_value FROM $wpdb-&gt;postmeta WHERE post_id=$post_id&quot;); if (count($post_meta_infos)!=0) { $sql_query = &quot;INSERT INTO $wpdb-&gt;postmeta (post_id, meta_key, meta_value) &quot;; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info-&gt;meta_key; if( $meta_key == &#39;_wp_old_slug&#39; ) continue; $meta_value = addslashes($meta_info-&gt;meta_value); $sql_query_sel[]= &quot;SELECT $new_post_id, &#39;$meta_key&#39;, &#39;$meta_value&#39;&quot;; } $sql_query.= implode(&quot; UNION ALL &quot;, $sql_query_sel); $wpdb-&gt;query($sql_query); } /* * finally, redirect to the edit post screen for the new draft */ wp_redirect( admin_url( &#39;post.php?action=edit&amp;post=&#39; . $new_post_id ) ); exit; } else { wp_die(&#39;Post creation failed, could not find original post: &#39; . $post_id); } } add_action( &#39;admin_action_rd_duplicate_post_as_draft&#39;, &#39;rd_duplicate_post_as_draft&#39; ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can(&#39;edit_posts&#39;)) { $actions[&#39;duplicate&#39;] = &#39;ID, basename(__FILE__), &#39;duplicate_nonce&#39; ) . &#39;&quot; title=&quot;Duplicate this item&quot; rel=&quot;permalink&quot;&gt;Duplicate&#39;; } return $actions; } add_filter( &#39;post_row_actions&#39;, &#39;rd_duplicate_post_link&#39;, 10, 2 );</code> <?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'] = 'ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
			

بشكل افتراضي ، يتيح المقتطف التكرار لكل من المنشورات والصفحات. إذا كنت تريد فقط تمكينه لأحدهما أو الآخر ، فيمكنك إزالة عامل تصفية page_row_actions أو post_row_actions في الجزء السفلي من مقتطف الشفرة.

قم بتحسين عملية إنشاء الويب الخاص بك عن طريق نسخ الصفحات والمنشورات

تعد القدرة على تكرار صفحة WordPress أو منشور أو أي نوع منشور آخر مفيدًا جدًا عندما تعمل على موقع WordPress.

في هذا المنشور ، شاركنا ثلاث طرق مختلفة يمكنك استخدامها لتكرار المحتوى.

بالنسبة لمعظم الأشخاص ، أسهل طريقة لاستنساخ منشور أو صفحة بالكامل هي عبر المكون الإضافي Yoast Duplicate Post المجاني. يبدأ العمل على الفور ويعمل مع محرر الكتلة (Gutenberg) و Elementor ومحرر Classic TinyMCE. كما أنه يعمل مع جميع أنواع المنشورات ، من الصفحات إلى المنشورات وأي أنواع منشورات مخصصة قد تستخدمها.

إذا كان لديك متجر WooCommerce ، فيمكنك أيضًا استخدام ميزة WooCommerce المدمجة لتكرار المنتجات. أو يمكنك إضافة بعض التعليمات البرمجية المخصصة إلى موقعك إذا كنت تفضل عدم تثبيت مكون إضافي آخر.

أخيرًا ، إذا كنت بحاجة فقط إلى نسخ محتوى / تصميم منشور ما ، فيمكنك استخدام نظام قالب Elementor أو استخدام خيار محرر الكتلة لنسخ كل المحتوى.

قبل أن نذهب ، تذكير سريع واحد. لا ترغب في نشر محتوى مكرر في معظم المواقف لأنه يمكن أن يؤثر سلبًا على مُحسنات محركات البحث. لذلك إذا كنت تقوم بتكرار صفحة دون تغيير محتواها (ربما فقط لتغيير عنوان URL) ، فستحتاج إلى التفكير في إعادة توجيه الصفحة الأصلية بمجرد الانتهاء.

هل لا يزال لديك أي أسئلة حول كيفية نسخ صفحة أو منشور على WordPress؟ دعنا نعلم فى قسم التعليقات.