IT-Swarm.Net

إزالة علامات التحديث لغير المشرفين

أحاول إزالة أو إخفاء علامات التحديث للمستخدمين غير المشرفين. كمسؤول ، أرى:

 enter image description here 

الإجابة الشائعة التي رأيتها للتعامل مع هذا تقول للاستخدام:

function hide_update_nag() {
    if ( !current_user_can('update_core') ) {
        remove_action( 'admin_notices', 'update_nag', 3 );
    }
}
add_action( 'admin_head', 'hide_update_nag', 1 );

يعمل هذا بشكل جيد لإزالة الرسالة الأولى (يتوفر WordPress 4.5.3! يرجى التحديث الآن) ولكنه يترك الرسالة الثانية مرئية لغير المشرفين:

 enter image description here 

يتم لف كلتا الرسالتين في <div class="update-nag"> ، لذلك خيار واحد هو تعديل مقطع الكود أعلاه لاستخدام CSS لإخفاء تذمر مع:

echo '<style>.update-nag {display: none}</style>';

ولكن هذا يشعر kludgy بالنسبة لي. هل هناك طريقة لربط إجراء أو تصفية وإزالة كافة رسائل التحديث المزعجة للمستخدمين غير المشرفين؟ لا توصيات البرنامج المساعد طرف ثالث من فضلك.

12
j08691

في wp-admin/includes/update.php ملف

if ( current_user_can('update_core') )
        $msg = sprintf( __('An automated WordPress update has failed to complete - <a href="%s">please attempt the update again now</a>.'), 'update-core.php' );
    else
        $msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.');

يمكننا أن نرى أن الرسائل مختلفة بناءً على دور المستخدم الحالي وهذا هو maintenance_nag.

في الأساس لدينا اثنين من علامات التحديث ويمكن العثور عليها في admin-filters.php

add_action( 'admin_notices', 'update_nag',      3  );
add_action( 'admin_notices', 'maintenance_nag', 10 );

وذلك لإزالة الرسالة الثانية التي يمكننا استخدامها (تحقق أيضًا من دور المستخدم الحالي إذا كنت تريد ذلك لغير المشرفين فقط)

remove_action( 'admin_notices', 'maintenance_nag', 10 );

للاستخدام متعدد المواقع

remove_action( 'network_admin_notices', 'maintenance_nag', 10 );
16
bravokeyl

استضافة سحابة سريعة وموثوقة وبأسعار معقولة

اشترك واحصل على $50 مكافأة خلال 30 يومًا!

هنا رمز كامل ، والذي يبدو أنه يعمل في هذه اللحظة:

add_action('admin_head', function() {
    if(!current_user_can('manage_options')){
        remove_action( 'admin_notices', 'update_nag',      3  );
        remove_action( 'admin_notices', 'maintenance_nag', 10 );
    }
});
2
T.Todua

bravokeyl هو على الأرجح أفضل إجابة لمشكلتك العاجلة.

ولكن لمعالجة ما يلي:

هل هناك طريقة لربط إجراء أو تصفية وإزالة كافة رسائل التحديث المزعجة للمستخدمين غير المشرفين؟

لا. إن رسائل Nag في WordPress هي مجرد رد لإضافته إلى الخطاف admin_notices الذي يطبع بعض HTML على الصفحة. إنها عملياً هي نفسها رسائل الخطأ أو النجاح أو أي "إشعار" آخر من WordPress أو أي مكون إضافي أو سمة أخرى لهذه المسألة.

إخفاء العلامات عبر CSS هو hacky. كما أنها عرضة لبعض الإيجابيات الخاطئة لأن بعض الإضافات/السمات ستستخدم بشكل غير صحيح فئة .update-nag لتوفير التصميم المرغوب لإشعاراتها.

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

1
Stephen Harris