it-swarm.asia

أضف رابط "تسجيل الخروج" إلى قائمة التنقل

كيف يمكنني إضافة رابط إلى قائمة التنقل الأساسية باستخدام سمة class="right"؟

حاولت إضافة رابط ثابت إلى example.com/wp-logout.php?action=logout ولكن هذا يؤدي إلى صفحة تأكيد تسجيل الخروج. هل هناك أي طريقة لجعله رابط الخروج؟

15
Zach Russell

يمكنك تحقيق ذلك باستخدام ربط wp_nav_menu_items. دعونا نلقي نظرة على الجزء التالي من الكود الذي يعرض رابط تسجيل الدخول/الخروج في موقع القائمة primary.

add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );

function wti_loginout_menu_link( $items, $args ) {
   if ($args->theme_location == 'primary') {
      if (is_user_logged_in()) {
         $items .= '<li class="right"><a href="'. wp_logout_url() .'">'. __("Log Out") .'</a></li>';
      } else {
         $items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log In") .'</a></li>';
      }
   }
   return $items;
}

هذا ما قمنا بتطبيقه في المثال أعلاه.

  1. أولاً أضف عامل تصفية لربط wp_nav_menu_items وإرفاق دالة به.
  2. بعد التحقق من موقع سمة primary ، تحققنا من تسجيل دخول المستخدم أم لا.
  3. إذا قمت بتسجيل الدخول ، فقد أظهرنا الرابط Log Out وإلا فإن الرابط Log In.
  4. لقد قمنا بتمرير الرابط الثابت لصفحة العرض الحالية إلى عنوان URL لتسجيل الدخول حتى تتم إعادة توجيه المستخدم إلى الصفحة الحالية بعد تسجيل الدخول بنجاح.
  5. لقد استخدمنا class="right" في الكود أعلاه لتلبية الاحتياجات الخاصة بك.

يمكنك العثور على شرح مفصل عن هذا blog .

35
Chittaranjan

حاول إضافة رابط مخصص مع http://example.com/wp-login.php؟action=logout لقد نجح هذا الأمر بالنسبة لي!

2
Marcelo Oliveira

قائمة التذييل الخاصة بي هي عنصر واجهة مستخدم ، لذلك واجهت صعوبات في استخدام الكود بواسطة Chittaranjan. النسخة المعدلة التالية تعمل بالنسبة لي. لقد قمت أيضًا بتغيير الروابط وجعلتها "ديناميكية": يؤدي تسجيل الدخول إلى صفحة من اختيارك ، وسيظل تسجيل الدخول في الصفحة الحالية ، أو يرسل إلى الصفحة الرئيسية ، إذا كانت الصفحة الحالية هي صفحة تسجيل الدخول الخاصة (الخاصة). من الأفضل أن تتحقق مما إذا كانت صفحة تسجيل الدخول خاصة في الواقع ، لكنني لا أعرف كيفية القيام بذلك ، آسف.

add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );

function wti_loginout_menu_link( $items, $args ) {
    //var_dump($args);
    if (($args->menu->slug == 'footer')) {
        if (is_user_logged_in()) {
            $loginlink = '/your-private-page';
            $logoutlink = get_permalink();
            if (strpos($logoutlink, $loginlink) !== false) {
                $logoutlink = '/';
            }
            $items .= '<li class="right"><a href="'. wp_logout_url($logoutlink) .'">'. __("Log Out") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Log In") .'</a></li>';
        }
    }
    return $items;
}
0
Ralf