:: دورة تقسيم المناطق الخطرة واستخدام المعدات الكهربية ضد الانفجار|دورات هندسة الصيانة م (آخر رد :يارا مركز ITR)       :: دورة أنظمة التأريض الوقائي و الحماية من الصواعق في شبكات القوى الكهربائية|دورات هندسة (آخر رد :يارا مركز ITR)       :: دورة برنامج جودة التغذية الكهربية|دورات هندسة الصيانة والتشغيل مركزitr (آخر رد :يارا مركز ITR)       :: دورة حوكمة البيانات والحماية وإدارة الامتثال|دورات التجارة الخارجية مركزitr (آخر رد :يارا مركز ITR)       :: دورة إدارة ونمذجة وتقييم مخاطر الائتمان|دورات التجارة الخارجية مركزitr (آخر رد :يارا مركز ITR)       :: دورة النقد الأجنبي وأسواق المال والمشتقات المالية|دورات التجارة الخارجية مركزitr (آخر رد :يارا مركز ITR)       :: دورة أساسيات تكرير النفط|دورات البترول - النفط والغاز مركزitr (آخر رد :يارا مركز ITR)       :: دورة مراقبة جودة المنتجات النفطية|دورات البترول - النفط والغاز مركزitr (آخر رد :يارا مركز ITR)       :: دورة تكنولوجيا الأنابيب في الصناعات البترولية|دورات البترول - النفط والغاز مركزitr (آخر رد :يارا مركز ITR)       :: دورة أحكام عقود التأمين وفض منازعاتها بالتحكيم|دورات التأمين مركزitr (آخر رد :يارا مركز ITR)      
اختر لونك:
وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ ۖ وَسَتُرَدُّونَ إِلَىٰ عَالِمِ الْغَيْبِ وَالشَّهَادَةِ فَيُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ [ التوبة : ( 105 )] كلمة الإدارة

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

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



أضف رد جديد
 
LinkBack أدوات الموضوع انواع عرض الموضوع

قديم 24-02-2019, 10:17 PM   #1
تاريخ التسجيل: Feb 2019
الدولة: قلب ابي
العمر: 31
المشاركات: 1,006
التقييم: 10
تاريخ التسجيل: Feb 2019
الدولة: قلب ابي
العمر: 31
المشاركات: 1,006
التقييم: 10
افتراضي تخصيص (أو إزالة) شريط أدوات الإدارة في ووردبريس



تخصيص (أو إزالة) شريط أدوات الإدارة في ووردبريس

شريط أدوات الإدارة في ووردبريس هو ذاك الشريط الرفيع الأسود التي يظهر في أعلى الصفحة في موقعك، ويحتوي على قوائم وروابط تُشير عادةً إلى صفحاتٍ معيّنة في لوحة التحكم مثل تعديل المنشورات، وصفحة حساب المستخدم، وتخصيص القوالب والمزيد.

wordpress-admin-toolbar.png

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

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

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

4-1-default_toolbar_full.png

إزالة شريط أدوات الإدارة
قد تود في بعض الأحيان أن تُزيل شريط الأدوات من واجهة موقعك، إذ تستطيع إخفاءه لجميع المستخدمين أو لمستخدمين أولي دورٍ (role) محدد. السطر الآتي عندما تُضيفه إلى ملف functions.php (ولا تنسَ أن تستعمل قالبًا فرعيا child theme) سيحذف شريط الأدوات لجميع مستخدمي الموقع:

<?php show_admin_bar( false ); ?>
يجب على الدالة show_admin_bar أن تستدعى مباشرةً عند تحميل الإضافة ولا حاجة إلى استدعائها من دالة مرتبطة (hooked) بالحدث (action) المسمى init.

الحالة الأكثر شيوعًا هي إخفاء شريط الأدوات بناءً على امتيازات أو دور المستخدم. ستخفي الشيفرة الآتية شريط الأدوات لكل المستخدمين ما عدا المدراء والمحررين:

<?php

/**
* Remove WordPress Toolbar for subscribers
*/

function myplugin_remove_admin_bar() {

if ( ! current_user_can( 'publish_posts' ) ) {
show_admin_bar( false );
}
}

add_action( 'plugins_loaded', 'myplugin_remove_admin_bar' );
ذكرتُ قبل قليل أنَّه لا يُشترَط أن تستدعى الدالة show_admin_bar عبر دالة مرتبطة بحدثٍ ما. ولهذا قد تتساءل لماذا أضفناها إلى الحدث plugins_loaded؟ إن لم نفعل ذلك في هذه الحالة، فستُظهِر ووردبريس رسالة الخطأ الآتية:

Fatal error: Call to undefined function wp_get_current_user()
أما لو كنتَ تستدعي الدالة current_user_can()‎ من داخل ملف functions.php في قالبٍ ما، فعليك أن تربط (hook) تلك الدالة بحدث after_setup_theme.

هذا المثال مشابه كثيرًا للمثال السابق إلا أنَّه يعمل في القوالب:

<?php

/**
* Remove WordPress Toolbar for all users except admins and editors
*
*/

function mytheme_remove_admin_bar() {

if ( ! current_user_can( 'publish_posts' ) ) {
show_admin_bar( false );
}
}

add_action( 'after_setup_theme', 'mytheme_remove_admin_bar' );
إذا أردت أن تكون الشيفرة السابقة قابلة لإعادة الاستخدام، فمن المفضل ربط الدالة إلى الحدث after_setup_theme دائمًا.

منذ الإصدار 3.1، وفَّرَت ووردبريس المُرشِّح (show_admin_bar (filter، لذلك أصبحت لدينا طريقة أخرى لأداء نفس المهمة. فلو أردنا مثلًا إخفاء شريط الأدوات من جميع المستخدمين بسطرٍ وحيد:

<?php add_filter( 'show_admin_bar', '__return_false' ); ?>
وهو مماثل تمامًا للأسطر الآتية:

<?php

/**
* Remove WordPress Toolbar for all users
*
*/

function myplugin_remove_admin_bar(){

return false;
}

add_filter( 'show_admin_bar' , 'myplugin_remove_admin_bar' );
يمكنك أيضًا إظهار أو إخفاء شريط الأدوات بناءً على امتيازات المستخدم:

<?php

/**
* Remove WordPress Toolbar for users not allowed to publish posts
*
* @param bool $show_admin_bar Whether the admin bar should be shown
*/

function myplugin_remove_admin_bar( $show_admin_bar ) {

if( current_user_can( 'publish_posts' ) ){
return $show_admin_bar;
} else{
return false;
}
}

add_filter( 'show_admin_bar' , 'myplugin_remove_admin_bar' );
سيَظهَر شريط الأدوات -في المثال السابق- إلى المدراء والمحررين فقط (الذين يستطيعون النشر publish_posts).

هذا كل ما عليك معرفته إن أحببت إزالة الشريط، لكن ماذا لو أردت أن تستخدم شريط الأدوات لإضافة ميزاتٍ جديدةٍ إليه؟

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

سنستخدم الدوال الثلاث الآتية في أمثلتنا القادمة:

()add_node
()add_group
get_node()‎
تُعرَّف القوائم الافتراضية في ملف ‎/wp-includes/admin-bar.php، وبعض تلك القوائم متوفرة لجميع المستخدمين الذين سجلوا دخولهم، مثل قائمة "شعار ووردبريس" (التي فيها بعض الروابط التعليمية)، وقائمة "حسابي (التي تُظهِر بعض الروابط المتعلقة بالمستخدم الحالي)، وقائمةٌ باسم الموقع (التي توفر روابط سريعة للوحة التحكم).

4-2-site_name_menu.png

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

كيفية إضافة عناصر جديدة إلى قائمة موجودة مسبقا
عندما يكون هدفنا هو إضافة عناصر جديدة إلى شريط الأدوات بناءً على امتيازات المستخدم، فعلينا تمرير مُعامل (argument) إلى الدالة التي ستُستدعى ألا وهو نسخةٌ من كائن WP_Admin_Bar.

يمكن أن ترتبط الدالة بالحدث admin_bar_menu كما هو موضَّح في المثال الآتي:

<?php

function myplugin_customize_toolbar( $wp_admin_bar ){

// your code here
}

add_action( 'admin_bar_menu', 'myplugin_customize_toolbar', 999 );
ذكرتُ سابقًا في هذه المقالة أننا نستطيع بناء قوائم جديدة بالإضافة إلى إضافة روابط إلى قوائم موجودة مسبقًا. سنتيح للمستخدم -في المثال الآتي- رابطًا سريعًا إلى موقعه الإلكتروني وذلك بإضافة عقدة (node) جديدة إلى قائمة "حسابي".

عندما يتم تحميل الملف admin-bar.php، فستُنشَأ مجموعةٌ جديدةٌ من العقد (nodes) باسم user-actions التي ستُضاف إلى قائمة my-account، هذه المجموعة هي المجموع الرئيسية التي ستُضاف إليها أيّة روابط لتظهر في تلك القائمة الفرعية. وظيفة الشيفرة الآتية هي إضافة رابط إلى المجموعة:

<?php

/**
* Customize WordPress Toolbar
*
* @param obj $wp_admin_bar An instance of the global object WP_Admin_Bar
*/

function myplugin_customize_toolbar( $wp_admin_bar ){

$user = wp_get_current_user();

if ( ! ( $user instanceof WP_User ) ){
return;
}

$my_account = $wp_admin_bar->get_node( 'my-account' );

if( ! empty( $user->user_url ) && $my_account ){
$wp_admin_bar->add_node( array(
'parent' => 'user-actions',
'id' => 'user-url',
'title' => '<span class="user-url">' . __( 'My Website' ) . '</span>',
'href' => esc_url( $user->user_url )
) );
}
}

add_action( 'admin_bar_menu', 'myplugin_customize_toolbar', 999 );
في البداية، حصلنا على كائن ‎‎$current_user‎ ثم تحققنا أنَّه نسخةٌ من صنف WP_User، ثم حصلنا على كائن العقدة my-account، الذي يُشير إلى قائمة "حسابي" الموجودة على الجانب الأيسر من شريط الأدوات (أو الجانب الأيمن إن لم تكن تستخدم النسخة العربية من ووردبريس). في النهاية نتحقق من وجود الحقل user_url وتوفر كائن العقدة، ثم سنضيف user-url إلى القائمة.

الدالة السابقة ستولد شيفرة HTML الآتية:

<li id="wp-admin-bar-user-url">
<a class="ab-item" href="http://example.com">
<span class="user-url">My Website</span>
</a>
</li>
القائمة الناتجة موضحة في الصورة الآتية:

4-3-my_account.png

مثال متقدم: قوائم شرطية، وأنواع مقالات مخصصة والمزيد
تتوفر بعض قوائم شريط الأدوات في صفحاتٍ معيّنة فقط، على سبيل المثال، قائمة "تحرير المقالة" (Edit post) التي توفر رابطًا سريعًا لتعديل صفحة المنشور (post) أو الفئة (taxonomy) الحالية تظهر فقط في صفحات المنشورات وأرشيفات الفئات.

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

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

لنعد الآن إلى دالتنا ولنضف الشيفرة الآتية:

<?php

/**
* Customize WordPress Toolbar
*
* @param obj $wp_admin_bar An instance of the global object WP_Admin_Bar
*/

function myplugin_customize_toolbar( $wp_admin_bar ){

$user = wp_get_current_user();

if ( ! ( $user instanceof WP_User ) ){
return;
}

$my_account = $wp_admin_bar->get_node( 'my-account' );

// Add a custom link to My Account menu
if( ! empty( $user->user_url ) && $my_account ){
$wp_admin_bar->add_node( array(
'parent' => 'user-actions',
'id' => 'user-url',
'title' => '<span class="user-url">' . __( 'My Website' ) . '</span>',
'href' => esc_url( $user->user_url )
) );
}

if( current_user_can( 'editor' ) ){

// Add a new node to the Toolbar
// The link points to the pending posts admin page
$wp_admin_bar->add_node( array(
'id' => 'editor-menu',
'title' => '<span class="ab-icon"></span><span class="ab-label">' . __( 'Pending posts' ) . '</span>',
'href' => admin_url( 'edit.php?post_status=pending' )
) );

// Add group of links
$wp_admin_bar->add_group( array( 'parent' => 'editor-menu', 'id' => 'editor-actions' ) );

// Get post types
$cpts = (array) get_post_types( array( 'show_in_admin_bar' => true ), 'objects' );

foreach ( $cpts as $cpt ) {
if ( ! current_user_can( $cpt->cap->publish_posts ) )
continue;

// Get pending posts and post types
$posts = get_posts( array( 'post_type' => $cpt->name, 'post_status' => 'pending' ) );
$num = count( $posts );
$title = $num . ' ' . $cpt->label;

// Add a new link for each post type
$wp_admin_bar->add_node( array(
'parent' => 'editor-actions',
'id' => 'edit-' . $cpt->name,
'title' => $title,
'href' => admin_url( 'edit.php?post_status=pending&post_type=' . $cpt->name )
) );
}
}

add_action( 'admin_bar_menu', 'myplugin_customize_toolbar', 999 );
أولًا تحققنا إن كان المستخدم الحالي محررًا، فإن كان الأمر كذلك، فستُضاف القائمة الرئيسية editor-menu، ثم سنضيف المجموعة editor-actions مع ضبط أنها ستكون قائمة فرعية للقائمة الرئيسية editor-menu.

هنا يأتي الجانب المسلي: الدالة get_post_types تولد مصفوفة بكائنات أنواع المنشورات المخصصة ثم سنتحقق إن كان المستخدم الذي سجل دخوله له امتيازات التحرير على كل نوع منشورات مخصص (أي أنَّ المستخدم قادر على نشر المنشورات publish_posts) ثم سنحصل على مصفوفة لكل المنشورات التي تنتظر النشر في نوع المنشورات المخصص ونحصي عددهم.

4-4-editor_menu.png

في النهاية، سنضيف عقدة (أو عنصر) إلى مجموعة editor-actions. وسيُشير كل رابط في تلك المجموعة إلى صفحة تحرير المنشورات التي تنتظر النشر.

وإذا أردت أن تخصص طريقة عرض القائمة بإضافة أيقونة من مجموعة، فأضف الشيفرة الآتية إلى إضافتك (plugin) أو إلى ملف functions.php:

<?php

/**
* Prints style element
*/

function myplugin_custom_css() {

$output = '<style> wpadminbar wp-admin-bar-editor-menu .ab-icon:before { content: "\f322"; top: 2px; } </style>';
echo $output;
}

add_action( 'wp_head', 'myplugin_custom_css' );
ربطنا الدالة السابقة إلى الحدث المسمى wp_head التي -أي الدالة- ستطبع عنصر <style> في ترويسة (head) الصفحة. أعلم أنَّ هذه ليست أفضل طريقة عند تضمين ملفات الأنماط في مستند، لكننا نضيف هنا سطرًا وحيدًا، ولن يكون تحميل ملف CSS كامل خيارًا عمليًا.

لكن إن كنت تريد أن يبدو شريط الأدوات كباقي موقعك، فعليك أن تعيد تعريف الأنماط الموجودة في ‎/wp-includes/css/admin-bar.css ثم تُضمِّن الأنماط الخاصة بك.


مهرة النجدية غير متواجد حالياً   اقتباس
قديم 28-07-2019, 11:12 AM   #2
الصورة الرمزية هديل الحرف
تاريخ التسجيل: Jul 2019
العمر: 30
المشاركات: 504
التقييم: 10
افتراضي

بارك الله فيكِ
وجزاكِ الله خير الجزاء
دمتِ برضى الله وحفظه ورعايته
هديل الحرف غير متواجد حالياً   اقتباس
أضف رد جديد

الكلمات الدلالية (Tags)
منتديات رحيل, رحيل, شبكة رحيل, r7il, r7il.com


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
ما الذي تحتاج معرفته قبل الشروع في التطوير على ووردبريس مهرة النجدية قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 1 28-07-2019 11:12 AM
كيفية التسجيل في موقع feedburner raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 01-04-2019 03:14 PM
تعرف علي أفضل إضافات ووردبريس لعام 2019 raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 27-03-2019 10:08 PM
دليلك الشامل لتأمين موقع ووردبريس raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 27-03-2019 06:58 PM
طريقة تساعدك علي نقل ووردبريس من خادم محلي إلى موقع حي raheel قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress 0 25-03-2019 06:01 PM


الساعة الآن 05:50 AM

 


Content Relevant URLs by vBSEO ©2010, Crawlability, Inc.