调整了登陆界面

边栏的登陆界面占用了太大的空间,考虑之下将其移除。

使用了 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-&gt;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;
?>