带有错误打印的侧栏登录小部件,返回错误

时间:2010-12-18 作者:Philip

我正在构建一个小部件,以便从侧栏登录并打印错误(如果有),因此一切正常,但登录时返回错误:
警告:无法修改标题信息-标题已发送。。。。。

小部件的代码:

<?php
// Custom Login/Meta Widget
function widget_artdev_meta() { ?>

<?php global $user_ID, $user_identity, $user_level ?>
<?php if ( $user_ID ) : ?>
<div class="widget">
 <h2>Control Panel</h2>
 <ul>
  <li>Identified as <strong><?php echo $user_identity ?></strong>.
  <ul>
   <?php if ( $user_level >= 10 ) : ?>
   <li><a href="<?php bloginfo(\'url\') ?>/wp-admin">Dashboard</a></li>
   <?php endif // $user_level >= 10 ?>

   <?php if ( $user_level >= 1 ) : ?>
   <li><a href="<?php bloginfo(\'url\') ?>/wp-admin/post-new.php">Write an article</a></li>
   <?php endif // $user_level >= 1 ?>

   <li><a href="<?php bloginfo(\'url\') ?>/profile">Profile &amp; personal options</a></li>
   <li><a href="<?php echo wp_logout_url( $_SERVER[\'REQUEST_URI\'] ); ?>" title="Exit">Exit</a></li>
  </ul>
  </li>
 </ul>
</div>

<?php elseif ( get_option(\'users_can_register\') ) : ?>

<?php
if ( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'action\'] ) && $_POST[\'action\'] == \'log-in\' ) :
 global $error;
 $login = wp_login( $_POST[\'log\'], $_POST[\'pwd\'] );
 $login = wp_signon( array( \'user_login\' => $_POST[\'log\'], \'user_password\' => $_POST[\'pwd\'], \'remember\' => $_POST[\'rememberme\'] ), false );
endif;
?>

<div class="widget">
 <h2>Identification</h2>

 <?php if ( $error ) : ?>
  <p class="error">
   <?php echo $error; ?>
  </p><!-- .error -->
 <?php endif; ?>

 <ul>
  <li>
  <form action="<?php the_permalink(); ?>" method="post">
   <label for="log">Customer ID
    <input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="22" class="input_text_login alignright" />
   </label>
   <label for="pwd">Password
    <input type="password" name="pwd" id="pwd" size="22" class="input_text_login alignright" />
   </label>
    <input type="submit" name="submit" value="Login" class="button" style="margin-right:35px; width:70px;" />
    <input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Remember me
    <input type="hidden" name="action" value="log-in" />
    <input type="hidden" name="redirect_to" value="<?php echo $_SERVER[\'REQUEST_URI\']; ?>"/>
  </form>
  </li>
  <li><a href="<?php bloginfo(\'url\') ?>/wp-login.php?action=lostpassword">Recover password</a></li>
  <li><a href="<?php bloginfo(\'url\') ?>/register">Register</a></li>
 </ul>
</div>

<?php endif // get_option(\'users_can_register\') ?>
<?php }
if ( function_exists(\'register_sidebar_widget\') )
register_sidebar_widget(__(\'&rarr; Login/Meta Widget\',\'artdev\'), \'widget_artdev_meta\');
?>
有人能帮忙吗?我不明白问题出在哪里。。。!

非常感谢<菲利普

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

不要两者都使用wp_login()wp_signon(). 它们做同样的事情,但第一个不推荐使用2.8 widget API

  • 放置wp_signon() 在钩住的函数中init 标记(您可以在widget() 功能)
  • 结束

    相关推荐

    Login form in popup

    我将WP3与defaul主题一起使用。我希望人们在提交评论之前注册。我想做的是建立一个链接,而不是像“留下评论”这样的评论表单。单击此链接将打开一个弹出窗口,其中包含登录/注册表单或评论表单(如果用户已登录)。这可能吗?谢谢