これを機能させるために、次のことを行いました (Wordpress ディレクトリ内の別のディレクトリに Code Igniter アプリケーションがあります) 。
まず、Code Igniter の Cookie 名を wp-includes/load.php の $no_unset 配列に追加しました。私の場合は ci_session でした。
$no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix','ci_session' );
次に、Wordpress の add_magic_quotes 関数が $_COOKIE グローバルをマングリングしていることに気付きました。これにより、CodeIgniter が各ページの読み込みまたはリダイレクトで Cookie を再作成し、それによって連続性が失われていました。そこで、wp-includes.load.php のこの行をコメントアウトしました (545 行目あたり)。
//$_COOKIE = add_magic_quotes( $_COOKIE );
次に、Wordpress に関連する他のすべての Cookie に対してこの関数をそのまま使用するために、array_walk 関数を作成して $_COOKIE グローバルをループし、wp-includes/load.php 関数内の私のものを除くすべての Cookie に add_magic_quotes を適用します。
/**
* Applies Magic Quotes to the $_COOKIE global but ignores Codeigniter's Cookie
* @param string $value Value passed by array_walk function
* @param string $key Key passed by array_walk function
*/
function ci_ignore_magic_quotes($value,$key)
{
if($key != "ci_session")
{
stripslashes_deep($value);
}
}
//Put this line in place of the commented out line above...
array_walk($_COOKIE, 'ci_ignore_magic_quotes');
これを行った後、ci_sessions テーブルに複数の Cookie が保存されなくなり、セッションが正常に保持されました。
これが役立つことを願っています!