1

私の 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>';
?>

予想どおり、ユーザーの名前とともに「ようこそ」が表示されます。ユーザーを非WPページに転送するカスタムメニューがあり、最初の行は次のとおりです。

<?php 
  session_start(); 
  $name = $_SESSION['memberName'];
?>

しかし、この wp 以外のページにリンクすると、$name が空白になります。セッションで !name を転送するにはどうすればよいですか?

4

4 に答える 4

0

次のように WP をロードする WP ページにします。

require_once('PathToBlogRoot/wp-load.php');

それを達成する最も簡単な方法だと思います。

于 2012-11-18T21:38:13.127 に答える
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

セッションから 1 つのアイテムを削除するには:

$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"]

これが役立つことを願っています。

于 2012-11-19T19:35:21.570 に答える
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']; ?>

しかし、クッキーはより永続的です。

于 2012-11-18T21:40:48.297 に答える
0

Vladimir は私に setcookie() を教えてくれたので、いくらかの信用を得ていますが、大きな問題は、ファイル内の html 行の前に setcookie を配置する必要があることです。WPではそれほど簡単ではありません。WordPress でこれを行う数少ない場所の 1 つは functions.php ファイルです。例えば:

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 情報を取得するのは簡単でした

于 2012-11-19T23:44:24.407 に答える