边栏的登陆界面占用了太大的空间,考虑之下将其移除。
使用了 SimpleModal Login 插件,并自己修改了主题代码,将登录链接放在了网页右上角。登陆后点击用户名即可访问控制面板。
<div id="user_center" style="float: right; font-size: 12px;">
<?php
global $current_user;
get_currentuserinfo();
if ( is_user_logged_in() ) {
$output = '<p style="color: #ccc; padding-top: 11px;">欢迎您,<a style="color: #fff; text-decoration: none;" title="访问控制面板" href="wp-admin">'.$current_user->display_name.'</a> | <a style="color: #ccc; text-decoration: none;" title="登出" href="'.wp_logout_url(get_permalink()).'">登出</a></p>';
} else {
$output = '<p style="color: #ccc; padding-top: 11px;">已有账号? <a class="simplemodal-login" style="color: #fff; text-decoration: none;" title="登陆" href="'.wp_login_url(get_permalink()).'">登陆</a></p>';
}
echo $output;
?>
</div>
WordPress 的函数确实是很丰富的,使用起来也很方便。以后也许可以自己写一些东西来实现特殊的功能了。
补充:
唔,刚改完就发现问题了。控制面板的跳转页面错误地使用了相对路径,于是改为 home_url(“wp-admin”) 。
此外,get_permalink() 函数在当前页不是文章和页面的时候,貌似会跳转错误。比如在主页登录会自动跳转到最新的文章。于是从另一个登录插件里借用了下面这段代码,用 wjnan_current_url() 取代了 get_permalink() 。现在应该正常了。
再补充:
下面的代码也不是万无一失的,在搜索页面登陆会指向带有乱码的链接。不过,我可能是太苛刻了吧,似乎没有人会从搜索页面登陆……
<?php
if ( !function_exists('wjnan_current_url') ) :
function wjnan_current_url() {
global $wpdb, $post, $cat, $tag, $author, $year, $monthnum, $day, $wp_query;
$pageURL = "";
if ( is_home() && $wp_query->is_posts_page==1) {
$pageURL = get_permalink(get_option('page_for_posts'));
}
elseif (is_home() || is_front_page())
{
$pageURL = get_bloginfo('url');
}
elseif (is_single() || is_page()) {
$pageURL = get_permalink($wp_query->post->ID);
}
elseif (is_category())
{
$pageURL = get_category_link($cat);
}
elseif (is_tag())
{
$tag_id = $wpdb->get_var("SELECT ".$wpdb->terms.".term_id FROM $wpdb->term_taxonomy
LEFT JOIN $wpdb->terms
ON (".$wpdb->term_taxonomy.".term_id = ".$wpdb->terms.".term_id)
WHERE ".$wpdb->terms.".slug = '$tag'
AND ".$wpdb->term_taxonomy.".taxonomy = 'post_tag' LIMIT 1");
$pageURL = get_tag_link($tag_id);
}
elseif (is_author())
{
$pageURL = get_author_posts_url($author);
}
elseif (is_date()) {
if ($day)
{
$pageURL = get_day_link( $year, $monthnum, $day);
}
elseif ($monthnum)
{
$pageURL = get_month_link( $year, $monthnum, $day);
}
elseif ($year)
{
$pageURL = get_year_link( $year, $monthnum, $day);
}
}
elseif (is_search())
{
$pageURL = get_bloginfo('wpurl');
if ("/" != substr($pageURL, -1)) $pageURL = $pageURL . "/";
$pageURL .= '?s='.stripslashes(strip_tags($_REQUEST['s'])).'';
}
if (!$pageURL || $pageURL=="" || !is_string($pageURL)) {
$pageURL = "";
$pageURL = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
if (!strstr(get_bloginfo('url'),'www.')) $pageURL = str_replace('www.','', $pageURL );
}
if ($pageURL && !is_search()) if ("/" != substr($pageURL, -1)) $pageURL = $pageURL . "/";
if ( force_ssl_login() || force_ssl_admin() ) {
$pageURL = str_replace( 'http://', 'https://', $pageURL );
}
return $pageURL;
}
endif;
?>