wordpress顶部管理条修改详解

wordpress3以后的版本更加丰富,在个人资料设置中出现了是否在前台和后台显示顶部管理条的功能。顶部管理条即漂浮在博客顶部,方便管理的一些快捷链接,可以帮助博主快速的添加文章,修改外观等。不过需要注意的是,当开启顶部管理条之后,部分主题后出现错位的现象,如果出现该现象,那么使用css对全体内容所在的区域做margin或padding处理一下应该能解决。

本文要解决的是如果修改顶部管理条,让它随我们的意向访客或注册用户展示,特别是在开启多站点功能之后,这些快捷菜单显得极为重要。效果如wordpress中国圈(http://wordpress.cn.gp),可以按照乌徒帮建wordpress中国圈,为爱好者提供测试站一文中提供的使用方法,登陆wordpress中国圈进行在线测试文本实现的效果。

一、开启顶部管理条显示之后,修改其内容

当你不开启显示时,你什么都不会看到,而当你开启之后,它就会飘在网页顶部。这时你希望添加某一项菜单,实现你的功能,例如,你想添加一个系统常规设置的功能,那该怎么办呢?

编辑/wp-includes/class-wp-admin-bar.php文件,找到render()函数,这就是目前最初的管理条状况了。wordpress3.1的是这样:

function render() {
?>
<div id=”wpadminbar”>
<div>
<ul>
<?php foreach ( (array) $this->menu as $id => $menu_item ) : ?>
<?php $this->recursive_render( $id, $menu_item ) ?>
<?php endforeach; ?>
</ul>
</div>

<div id=”adminbarsearch-wrap”>
<form action=”<?php echo home_url(); ?>” method=”get” id=”adminbarsearch”>
<input name=”s” id=”adminbar-search” type=”text” value=”” maxlength=”150″ />
<input type=”submit” value=”<?php _e(‘Search’); ?>”/>
</form>
</div>
</div>

<?php
/* Wipe the menu, might reduce memory usage, but probably not. */
$this->menu = null;
}

上面第一块儿是管理条左边部分的链接,我们通常修改这里,第二块儿是右边的搜索。在第一块儿中添加一个<li>常规</li>做好链接即可。

二、访客访问时不会显示管理条,应该怎修改呢

当访客访问时是不会显示的,只有注册用户且在后台开启了该功能才会显示。如果做到想wordpress.com那样在顶部提供登陆或注册提示呢?需要修改三处:

1、打开/wp-includes/admin-bar.php找到_wp_admin_bar_init(),修改下面这个地方:

if ( ! is_admin_bar_showing() )
return false;

修改为

$user_id = get_current_user_id();
if($user_id){
if ( ! is_admin_bar_showing() )
return false;
}

2、再往下找到wp_admin_bar_render(),修改下面这个地方:

if ( ! is_admin_bar_showing() || ! is_object( $wp_admin_bar ) )
return false;

修改为

$user_id = get_current_user_id();
if($user_id){
if ( ! is_admin_bar_showing() || ! is_object( $wp_admin_bar ) )
return false;
}

3、修改前台样式,编辑/wp-includes/class-wp-admin-bar.php文件,找到render()函数,修改这个地方:

在新的wordpress中,已经不再用修改class-wp-admin-bar.php中修改,只需要在admin-bar.php的wp_admin_bar_wp_menu()函数中增加就可以了,增加的方法可以根据函数中已有的模式,照葫芦画瓢,添加修改删除菜单选项。如:

if(!is_user_logged_in()){
// 添加未登录情况下的菜单
$wp_admin_bar->add_menu(array(
‘id’ => ‘global-back-home’,
‘title’ => get_blog_option(1,’blogname’),
‘href’ => get_blogaddress_by_id(1),
‘meta’ => array(
‘title’ => ‘返回网站首页’
)
));
$wp_admin_bar->add_menu(array(
‘id’ => ‘global-login’,
‘title’ => ‘登录’,
‘href’ => wp_login_url(),
‘meta’ => array(
‘title’ => ‘点击进入登录页面’
)
));
$wp_admin_bar->add_menu(array(
‘id’ => ‘global-register’,
‘title’ => ‘注册’,
‘href’ => wp_login_url().’?action=register’,
‘meta’ => array(
‘title’ => ‘点击进入注册页面’
)
));
}

更新:在老的版本中,并没有提供wp_admin_bar_wp_menu()函数,我们可以在admin-bar.php中找到_wp_admin_bar_init(),再在下面找到$wp_admin_bar->add_menu()默认情况为空,我们只需按照上面这段代码的方式进行修改就好,你也可以直接拷贝过去。

下面是之前在class-wp-admin-bar.php中修改的方法

foreach ( (array) $this->menu as $id => $menu_item ) :
$this->recursive_render( $id, $menu_item );
endforeach;

修改为

<?php
$user_id = get_current_user_id();
if(!$user_id){ ?>
<li><a name=”login”>
<form action=”<?php echo get_option(‘home’); ?>/wp-login.php” method=”post” style=”height:28px;line-height:28px;”>
用户名:<input type=”text” name=”log” id=”log” value=”<?php echo wp_specialchars(stripslashes($user_login), 1) ?>” size=”20″ />
密码:<input type=”password” name=”pwd” id=”pwd” size=”20″ />
<input type=”submit” name=”submit” value=”登录” />
<label for=”rememberme”><input name=”rememberme” id=”rememberme” type=”checkbox” checked=”checked” value=”forever” /> 记住密码</label>
<input type=”hidden” name=”redirect_to” value=”<?php echo $_SERVER[‘REQUEST_URI’]; ?>” />
</form>
</a></li>
<li><a href=”<?php echo get_option(‘home’); ?>/wp-login.php?action=lostpassword”>忘记密码</a></li>
<li><a href=”<?php echo get_option(‘home’); ?>/wp-login.php?action=register”>注册</a></li>
<? }else{
foreach ( (array) $this->menu as $id => $menu_item ) :
$this->recursive_render( $id, $menu_item );
endforeach;
} ?>

其实你稍加理解就可以知道,无非是将原来只对已登录成员的is_admin_bar_showing()判断增加了新的$user_id = get_current_user_id();if(!$user_id)判断,即如果没有用户登陆的状况下,显示这部分的内容。通过这三部的修改,就能实现无论有无用户登陆都漂浮顶部管理条的情况了。当然,你可以根据自己的喜欢,将上面的代码进行修改,实现如果后台设置了不允许显示的情况下所有的都不显示,包括访客访问时。

好了,通过本文的讲解,我想你应该同时还了解到了很多有关wordpress顶部导航条修改的知识。希望本文对你有用!<完>

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录