在站点上创建自定义登录。

时间:2012-07-17 作者:Adola

傍晚

我正在尝试为我的网站创建一个简单的“登录”功能。我宁愿有一个下拉框,然后登录,重定向回您提交它的页面。

我找到了一些代码(我对wordpress很陌生),但它似乎工作不正常,当我单击“发送”时,没有任何更改。该页面没有给出任何错误,它只是停留在那里,它没有说我已经登录,也没有给出任何它行为不同的指示。

<?php if (!(current_user_can(\'level_0\'))){ ?>
<h2>Login</h2>
<form action="<?php echo get_option(\'home\'); ?>../../wordpress/wp-login.php" method="post">
<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="Send" class="button" />
    <p>
       <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me</label>
       <input type="hidden" name="redirect_to" value="<?php echo $_SERVER[\'REQUEST_URI\']; ?>" />
    </p>
</form>
<a href="<?php echo get_option(\'home\'); ?>/wp-login.php?action=lostpassword">Recover password</a>
<?php } else { ?>
<h2>Logout</h2>
<a href="<?php echo wp_logout_url(urlencode($_SERVER[\'REQUEST_URI\'])); ?>">logout</a><br />
<a href="http://XXX/wp-admin/">admin</a>
<?php }?>

2 个回复
SO网友:Ralf912

这取决于登录脚本的位置。这是我的测试脚本(另存为ìndex.php`):

<html>
<head>
    <title>Testform</title>
</head>
<body>
    <?php
        require_once \'../wp-load.php\';

        var_dump($_COOKIE);

        if ( !( current_user_can(\'level_0\') ) ){
            wp_login_form();
        }
        else { ?>
        <ul>
            <li><a href="<?php echo home_url(\'/wp-admin/\'); ?>">Admin</a></li>
            <li><a href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a></li>
        </ul>
    <?php } ?>
</body>
我在本地服务器的子目录中安装了WordPress(testdoma.in/wordpress). 如果我在WordPress安装中的子目录中安装脚本(testdoma.in/wordpress/external), 它起作用了。如果我在根目录中安装脚本(并更改require_oncewordpress/wp-load.php), 没有办法让它工作。

如果您试图访问WordPress功能,脚本必须位于WordPress安装的子文件夹中或直接位于WordPress安装中。

UPDATE

经过一些研究,这是一个cookie问题。插件root Cookie 将解决问题。

SO网友:Max Yudin

更改此行:

<form action="<?php echo get_option(\'home\'); ?>../../wordpress/wp-login.php" method="post">
对此:

<form action="<?php echo site_url(\'/wp-login.php\') ?>" method="post">
Updated:

考虑使用simplewp_login_form(). 看见wp_login_form reference 获取可能的函数参数。

<?php
if ( !( current_user_can(\'level_0\') ) ){
    wp_login_form();
}
else { ?>
<ul>
    <li><a href="<?php echo site_url(\'/wp-admin/\'); ?>">Admin</a></li>
    <li><a href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a></li>
</ul>
<?php } ?>

结束

相关推荐