全部的
我使用wordpress自定义菜单,有一个菜单作为注销。我知道wordpress的注销功能<?php echo wp_logout_url(); ?>
但如何在自定义菜单中使用它?
全部的
我使用wordpress自定义菜单,有一个菜单作为注销。我知道wordpress的注销功能<?php echo wp_logout_url(); ?>
但如何在自定义菜单中使用它?
不确定如何以及在何处创建自定义按钮,但可以为每个筛选器添加这样的链接:添加filter function to \'wp_nav_menu_objects\'
并在需要的地方插入链接。
以下是一个基本示例:
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;
}
您应该修改代码:检查菜单是否正确。例如,需要一个类has_log_out_link
对于menu_class
参数打开wp_nav_menu
和测试$args->menu_class
.menu_item_parent 发送到除0
如果您需要子菜单中的链接my other answer 检查这些
如果其他人对此感到困惑,我发现最简单的方法就是使用自定义链接选项将“注销”菜单项添加到您想要的位置。将url设置为唯一的,如logouturl,然后将此代码简单地添加到函数中。php文件或任何您喜欢添加自定义代码的地方。
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;
}
记住将str\\u replace的第一个参数更改为菜单设置的自定义链接中使用的字符串。您可能还需要将theme\\u位置从primary更改为适当的位置。我正在使用此(简化)代码通过单点登录系统的插件自动登录用户:$user_info = get_userdatabylogin( $username ); $user_id = $user_info->ID; wp_set_current_user( $user_id ); wp_set_auth_cookie( $user_id ); do_action( \'wp_login\', $username ); 我在网上找到的许多代码片段将此代码绑定到init