من امروز با طراحی صفحه پرداخت و UX بازی می کردم و هنگام آزمایش فهمیدم که مشتریان جدید می توانند پس از خرید به نوار سیاه ادمین بار وردپرس دسترسی پیدا کنند. بنابراین – گفتم – کار ساده ای است!

اما بعد از 20 دقیقه واقعیت (فکر کردم 1 دقیقه طول می کشد) سرانجام به مشکل پی بردم. و طبق معمول ، این وبلاگ با راه حل همراه است. از همراهی سایت خود لذت ببرید، و ما نیز خرسندیم.

D’oh! WooCustomers can see the WP Admin Bar…

1. پنهان کردن نوار مدیریت WP : در تئوری

وردپرس یک فیلتر خوب به ما می دهد “show_admin_bar“. مقدار آن را روی false تنظیم کنید و نوار مدیر از بین برود:


// Disable admin bar for non admins (this would work on a non-Woo site...)
function ej_hide_admin_bar_if( $show ) {
   if ( /* CONDITION */ ) $show = false;
   return $show;
}
add_filter( 'show_admin_bar', 'ej_hide_admin_bar_if' );

2. پنهان کردن نوار مدیریت WP: واقعیت

بعد از اینکه قطعه فوق روی نصب ووکامرس کار نمی کند ، من تحقیق زیادی کردم. قطعه های دیگر را امتحان کردم اما هیچ چیز بنابراین ، با خودم گفتم … اگر ووکامرس در حال حاضر از آن فیلتر استفاده کند و من بخواهم رفتار چیزی را که وو از قبل اصلاح کرده است ویرایش کنم ، چه می شود؟

خوب … این چیزی است که من در اینجا پیدا کردم woocommerce\includes\wc-user-functions.php:


/**
 * Prevent any user who cannot 'edit_posts' (subscribers, customers etc) from seeing the admin bar.
 *
 */
 
function wc_disable_admin_bar( $show_admin_bar ) {
   if ( apply_filters( 'woocommerce_disable_admin_bar', get_option( 'woocommerce_lock_down_admin', 'yes' ) === 'yes' ) && ! ( current_user_can( 'edit_posts' ) || current_user_can( 'manage_woocommerce' ) ) ) {
      $show_admin_bar = false;
   }
 
   return $show_admin_bar;
}
add_filter( 'show_admin_bar', 'wc_disable_admin_bar', 10, 1 );

ببینید ، چیزی در حال حاضر از فیلتر “show_admin_bar” استفاده می کند و آنچه که بیشترین اهمیت را دارد – اولویت مشخص شده در آنجا “10” است.

اساساً من در حال تغییر رفتار WP Admin Bar بودم ، اما پس از تماس ووکامرس در حال تغییر مجدد آن بود – در واقع بدون تعیین اولویت ، فیلتر من از اولویت پیش فرض “10” برخوردار بود ، خیلی زود انتظار داشت که Woo NOT دوباره -چنین عملکردی را تغییر دهید.

اگر این روشن نیست و شما ترجیح می دهید این مشکل را برطرف کنید – خوب ، جای نگرانی نیست ، اینجاست.

3. پنهان کردن نوار مدیریت WP برای غیر مدیران : قطعه کد PHP ووکامرس


function ej_hide_admin_bar_if_non_admin( $show ) {
   if ( ! current_user_can( 'administrator' ) ) $show = false;
   return $show;
}
 
add_filter( 'show_admin_bar', 'ej_hide_admin_bar_if_non_admin', 20, 1 );
 
// please note the priority = '20' to make sure we run the filter after Woo's one

دسته‌بندی:

Woocommerce,