我的wordpress博客需要用户名&密码。在我放置的第一个wp页面上:
<?php
global $current_user;
get_currentuserinfo();
$name = $current_user->user_firstname . ' '.$current_user->user_lastname;
$_SESSION['memberName'] = $name;
echo '<h2>Welcome ' . $name . '</h2>';
?>
正如所料,“欢迎”与用户名一起出现。我有一个自定义菜单,用于将用户转移到NON-WP页面,其初始行为:
<?php
session_start();
$name = $_SESSION['memberName'];
?>
但是,在链接到此非wp页面后,$ name为空。如何在会话中传输!名称?
答案 0 :(得分:0)
将WP加载为WP,如下所示:
require_once('PathToBlogRoot/wp-load.php');
我认为这是实现这一目标的最简单方法。
答案 1 :(得分:0)
如果它位于同一个域中,您可以将其添加到cookie中,如此
<?php
global $current_user;
get_currentuserinfo();
$name = $current_user->user_firstname . ' '.$current_user->user_lastname;
setcookie("guest_name", $name);
echo '<h2>Welcome ' . $name . '</h2>';
?>
然后在NON WP页面上你有类似
的东西<?php echo $_COOKIE('guest_name'); ?>
如果要将它们重定向到另一个域,最好将用户名放在GET参数中。就像您重定向到新页面时一样,您只需添加用户名
<?php
$name = $current_user->user_firstname . ' '.$current_user->user_lastname;
header( 'Location: http://your_non_wp_page/index.php?username='.$name ) ;
?>
然后在那个页面上你做
<?php echo $_GET['username']; ?>
但是cookie会更持久。
答案 2 :(得分:0)
为什么不使用WP Sessions Plugin。它为您创建会话,当用户更改其个人资料数据时,此插件还会更新其会话数据。同时,如果用户注销,则插件会从数据库中删除其会话数据。
一些例子:
您可以添加会话数据,如下所示:
// One value
$session->set_userdata( 'username', 'john' );
// Passing array
$array = array(
'username' => 'john',
'email' => 'john@gmail.com'
);
$session->set_userdata( $array );
检索会话数据:
$session->userdata( 'username' );
获取所有会话数据:
$session->all_userdata(); // returns array
从会话中删除一个项目:
$session->unset_userdata( 'username' );
从会话中删除更多项:
$array = array(
'username' => '',
'email' => ''
);
$session->unset_userdata( $array );
您还可以使用 Flashdata ,这是仅可用于下一个服务器请求的会话数据,然后自动清除。当您将它们用于信息性或状态消息时(例如“产品已被删除”),这些非常有用。
// Add Flashdata
$session->set_flashdata( 'item', 'value' );
// Retrieve Flashdata
$session->flashdata( 'item' );
// Preserving flashdata
// (if you need to preserve flashdata through an additional request,
// you can use this function):
$session->keep_flashdata( 'item' );
摧毁会话:
$session->sess_destroy();
该插件还支持短代码。您可以在帖子或页面上打印任何会话数据:
[session key="username"]
我希望这会有所帮助。
答案 3 :(得分:0)
虽然弗拉基米尔获得了一些荣誉 - 因为他指向我setcookie() - 一个主要问题是需要在文件中的html行之前放置setcookie;在WP中不那么容易。在WordPress中为数不多的几个地方之一是在functions.php文件中; e.g:
function set_user_cookie() {
global $current_user;
get_currentuserinfo();
$name = $current_user->user_firstname . ' '.$current_user->user_lastname;
setcookie('member_name', $name,time()+60*60*20,'/'); // 20 hours
}
add_action( 'init', 'set_user_cookie');
然后很容易在我的非wp页面中检索cookie信息