نظرًا لأن Haibor لديه بعض مفهوم التحكم في المعرفات ويحب الأشياء النظيفة والبسيطة، فأنا أشعر بالإحباط الشديد من وظيفة حفظ المسودة التلقائية للإصدار الجديد من WordPress، فهي تسبب الكثير من إهدار معرفات السجل وتجعل معرفات السجل غير متصلة. تخلص من هذه الوظيفة! !
اسمحوا لي أن أشرح الموقف أولاً: يرجع سبب انقطاع المعرف بشكل أساسي إلى ثلاث وظائف: إحداها هي وظيفة الحفظ التلقائي للحفظ التلقائي، والثانية هي وظيفة التنقيحات اللاحقة للإصدار التاريخي، والثالثة هي وظيفة المسودة التلقائية! بناءً على إصدارات ووردبريس المختلفة، تختلف الحلول! الرجاء تحديد الحل المناسب!
الإصدارات قبل وورد 3.1 (باستثناء 3.1):
1. افتح ملف wp-config.php وأضف الكود التالي أمام "$table_prefix = 'wp_';":
تعريف('WP_POST_REVISIONS'، خطأ)؛
تعريف('AUTOSAVE_INTERVAL'، خطأ)؛
2. ابحث عن الملفين wp-adminpost-new.php وwp-adminpost.php وافتحهما، وقم بالتعليق أو حذف "wp_enqueue_script('autosave');".
//wp_enqueue_script('حفظ تلقائي');
3. ابحث عن الملف wp-adminincludespost.php وافتحه، وابحث عن "if ($create_in_db) {" وأضف السطر التالي قبله:
$create_in_db = false;
WordPress 3.1 والإصدارات الأحدث (بما في ذلك 3.1):
منذ الإصدار 3.1، أجرى البرنامج تغييرات على وظيفة المسودة التلقائية. ستؤدي الخطوة الثالثة في الطريقة المذكورة أعلاه إلى مطالبة بعدم وجود إذن تشغيل عند نشر المقالات في الخلفية!
أولاً، يجب علينا اتباع الخطوتين 1 و2 في الطريقة المذكورة أعلاه لتحقيق تعطيل وظيفة الحفظ التلقائي ووظيفة نشر المراجعات للإصدار التاريخي. بعد ذلك، دعونا نحاول التعامل مع تعطيل وظيفة المسودة التلقائية!
نظرًا لأن الخطوة الثالثة في الطريقة المذكورة أعلاه غير صالحة، لم يعد بإمكانك إضافة الكود $create_in_db = false في الوقت الحالي، وظيفة نشر المقالة عادية، ولكن طالما قمت بالنقر فوق "إضافة مقال جديد"، بغض النظر عما إذا كان ذلك صحيحًا أم لا سواء قمت بتحرير المقالة أم لا، طالما لم تنقر فوق "حفظ" في النهاية أو انقر فوق "حفظ كمسودة" (مثل إغلاق صفحة التحرير مباشرة)، فسيقوم البرنامج تلقائيًا بإضافة سجل مسودة تلقائي غير مرئي، مع العنوان. "مسودة تلقائية" والحالة "مسودة تلقائية"، ويمكن فقط استخدام phpmyadmin لاستخراج البيانات من قاعدة البيانات. لذلك، إذا لم تكن لديك فكرة مدونة جيدة، فلا تنقر لإضافة مقال جديد بسهولة!
يوجد أدناه حلان مثاليان إلى حد ما. يأتي الكود الأساسي من مجلد باسم "معلق" على الكمبيوتر ولا يمكن العثور على المصدر. شكرًا للطرف والإنترنت والمؤلف الأصلي. هنا سأقوم بتنظيمه وتحسينه ومشاركته مع الجميع. في هذه المرحلة، يمكن للمستخدمين الذين لا يتحكمون في الهوية الانتقال مباشرة إلى التعليقات أدناه هاها! !
ملحوظة: عدد الأسطر المذكورة أدناه يعتمد على إصدار WordPress 3.2.
الخيار 1: تغيير المسودة التلقائية غير المرئية إلى مسودة سجل مسودة مرئية.
بالرجوع إلى الخطوة 3 أعلاه، ابحث عن ملف wp-adminincludespost.php وافتحه، وابحث عن "if ($create_in_db) {"، وابحث عن 423 سطرًا تقريبًا:
$post_id = wp_insert_post( array( 'post_title' => __( 'مسودة تلقائية' ), 'post_type' => $post_type, 'post_status' => 'مسودة تلقائية' ) );
قم بتغيير الكود أعلاه إلى:
$post_id = wp_insert_post( array( 'post_title' => __( 'مسودة تلقائية' ), 'post_type' => $post_type, 'post_status' => 'مسودة' ) );
نصيحة: هذا الحل لا يمنع الإنشاء التلقائي للمسودات عند النقر فوق "إضافة مقال جديد"، ولكن ما يتم إنشاؤه في هذا الوقت هو سجل مسودة يمكن رؤيته في قائمة المقالات، ويمكنك النقر عليه لتحريره! بالطبع، إذا قمت بالنقر فوق لإضافة مقال جديد عدة مرات، فسيتم إنشاء سجلات مسودات متعددة، وهذا ليس لطيفًا جدًا، هاها!
الخيار 2: المبدأ هو الحصول على المسودة التلقائية الأقدم واستخدامها كمقال حالي، وهذا يمكن أن يحافظ على استمرارية معرفات المقالة بناءً على وظيفة المسودة التلقائية الأصلية، وإزالة وظيفة حذف المسودات التلقائية قبل 7 أيام.
استمر في البحث عن ملف wp-adminincludespost.php وفتحه، وابحث عن "if ($create_in_db) {"، وابحث عن الأسطر من 418 إلى 427:
إذا ($create_in_db) {
// تنظيف المسودات التلقائية القديمة التي مضى عليها أكثر من 7 أيام
$old_posts = $wpdb->get_col( "حدد المعرف من $wpdb->المشاركات حيث post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );//حذف المسودات التلقائية قبل 7 أيام
foreach ((صفيف) $old_posts كـ $delete)
wp_delete_post( $delete, true );
$post_id = wp_insert_post( array( 'post_title' => __( 'مسودة تلقائية' ), 'post_type' => $post_type, 'post_status' => 'مسودة تلقائية' ) );
$post = get_post( $post_id );
إذا ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
set_post_format( $post, get_option( 'default_post_format' ));
} آخر {
استبدل ب
إذا ($create_in_db) {
global $current_user;// احصل على مستخدم إدارة تسجيل الدخول الحالي
$post = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_type = '$post_type' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" ); // احصل على أقرب مسودة تلقائية
إذا (!$post) {
$post_id = wp_insert_post( array( 'post_title' => __( 'مسودة تلقائية' ), 'post_type' => $post_type, 'post_status' => 'مسودة تلقائية' ) );
$post = get_post( $post_id );
}
إذا ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) )
set_post_format( $post, get_option( 'default_post_format' ));
} آخر {
تم شرح مبدأ الخيار الثاني أعلاه، يرجى قراءته مع تعليقات الكود إذا كنت في حاجة إليه. الحل للخيار الثاني هو أنه إذا كانت قاعدة البيانات تحتوي بالفعل على سجل مسودة تلقائي غير مرئي، فعند النقر لإضافة مقالة جديدة، لن يتم إنشاء المقالات الجديدة تلقائيًا، وبدلاً من المسودات التلقائية غير المرئية، يتم استدعاء المسودة غير المرئية الأقدم مباشرةً كسجل قاعدة بيانات مطلوب للمقالة الحالية تم حذفه "أقدم من 7 أيام". !
حسنًا، من فضلك اجلس إذا كنت بحاجة إلى أحذية أطفال. إذا كان لديك اقتراحات أو أسئلة أفضل، يرجى ترك رسالة للتبادل!
هذه المقالة أصلية لـ Nuodou. من فضلك لا تحذف رابط هذه المقالة عند إعادة طباعتها: http://www.nuodou.com/item/622.html .
شكرا لهايبور لمساهمتك