¿Cómo usar la función de cierre de sesión en el enlace del menú personalizado?

4

Todos

Estoy usando el menú personalizado de wordpress, y hay un menú como Cerrar sesión. Sé que la función de cierre de sesión de wordpress <?php echo wp_logout_url(); ?>

¿Pero cómo puedo usarlo en el menú personalizado?

    
pregunta Ajay Patel 23.03.2012 - 07:09

2 respuestas

6

No está seguro de cómo y dónde puede crear un botón personalizado, pero puede agregar dicho enlace por filtro: agregue un filtre la función a 'wp_nav_menu_objects' e inserte el enlace donde lo necesite.

Aquí hay un ejemplo básico:

add_filter( 'wp_nav_menu_objects', 'wpse_46547_add_log_out_link', 10, 2 );

function wpse_46547_add_log_out_link( $sorted_menu_items, $args )
{
    $link = array (
        'title'            => 'Log out',
        'menu_item_parent' => 0,
        'ID'               => '',
        'db_id'            => '',
        'url'              => wp_logout_url()
    );

    $sorted_menu_items[] = (object) $link;

    return $sorted_menu_items;
}

Usted debería modificar el código:

  • Comprueba si estás en el menú correcto. Por ejemplo, requiera una clase has_log_out_link para el parámetro menu_class en wp_nav_menu y pruebe $args->menu_class .
  • I18n para el título del menú. ;)
  • Establezca menu_item_parent en una ID de publicación que no sea 0 si necesita el enlace en un submenú.
  • Hay más parámetros para el enlace, consulte mi otra respuesta para inspeccionarlos.
respondido por el fuxia 23.03.2012 - 08:07
0

En caso de que alguien más tenga dificultades con esto, la forma más sencilla que encontré fue simplemente agregar el elemento del menú Cerrar sesión exactamente donde lo desee mediante la opción de enlace personalizado. Haga de la URL algo único como logouturl y simplemente agregue este código a su archivo functions.php o donde prefiera agregar un código personalizado.

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

function wp123e_loginout_menu_link( $items, $args ) {
   if ($args->theme_location == 'primary') {
      if (is_user_logged_in()) {
         $items = str_replace('logouturl', wp_logout_url(), $items);
      }
   }
   return $items;
}

Recuerde cambiar este primer parámetro de str_replace a la cadena utilizada en el enlace personalizado de la configuración del menú. Es posible que también deba cambiar la ubicación del tema de la ubicación principal a la adecuada.

    
respondido por el hugmin42 20.10.2016 - 20:59

Lea otras preguntas en las etiquetas