ソースコードを見させていただきましたが、「minecraftjp_flash」というcookieを使用しているようで、ページを推移、リログ、などをしても、「Minecraft.jpアカウントのリンクに成功しました。」などの通知が消えることはありませんでした。
そこで、cookieではなく、sessionを使用したらどうかと思いますが、
Controller.phpに、
public function __construct()
{
add_action('init', array(&$this, 'init_sessions')); // 追加
// $this->baseDir ~~~~(略)
}
// 追加
public function init_sessions() {
if (!session_id()) {
session_start();
}
if (!is_array($_SESSION[App::NAME . '_flash'])) {
$_SESSION[App::NAME . '_flash'] = array();
}
}
public function setFlash($message, $element = 'default', $params = array()) {
// 削除$messages = isset($_COOKIE[App::NAME . '_flash']) ? json_decode($_COOKIE[App::NAME . '_flash'], true) : array();
// 変更
$_SESSION[App::NAME . '_flash'][] = array(
'message' => $message,
'element' => $element,
'params' => $params,
);
// 削除 setcookie(App::NAME . '_flash', json_encode($messages), time() + 3600, '/');
}
という風にsessionを書き込むように変更し、
AdminController.phpに、
public function actionAdminNotices() {
// 削除 $name = App::NAME . '_flash';
// 削除 $messages = isset($_COOKIE[$name]) ? json_decode(stripcslashes($_COOKIE[$name]), true) : array();
// 変更
foreach ($_SESSION[App::NAME . '_flash'] as $message) {
$class = isset($message['params']['class']) ? $message['params']['class'] : 'updated';
print <<<_HTML_
<div class="{$class}">
<p><strong>{$message['message']}</strong></p>
</div>
_HTML_;
}
// 追加
$_SESSION[App::NAME . '_flash'] = array();
// 削除 setcookie($name, '', time() - 3600, '/');
}
UserController.phpに
public function filterLoginMessage($loginMessage) {
// 削除 $name = \WPMinecraftJP\App::NAME . '_flash';
// 削除 $messages = isset($_COOKIE[$name]) ? json_decode(stripcslashes($_COOKIE[$name]), true) : array();
// 削除 setcookie($name, '', time() - 3600, '/');
// 変更
foreach ($_SESSION[App::NAME . '_flash'] as $message) {
$class = isset($message['params']['class']) ? $message['params']['class'] : 'updated';
$loginMessage .= <<<_HTML_
<div id="login_error">
<p><strong>{$message['message']}</strong></p>
</div>
_HTML_;
}
// 追加
$_SESSION[App::NAME . '_flash'] = array();
return $loginMessage;
}
というように変更を加えるとうまくいきました。
参考になれば幸いです。
Minecraft.jpを応援しています!
設定まではできるのですが、いざそれを使ってログインしようとしたのですが、画面が真っ白のままで動作しません。その部分を訂正してほしいです。
]]>