Ок. Я искал, и ничего не покрывает это.
Я следил за этим руководством: http://philpalmieri.com/2009/06/codeigniter-and-wordpress-play-well-together/
Что в основном говорит, чтобы установить WordPress, заставить его работать, а затем заменить файл index.php на Code Igniters, а затем в нижней части файла перед началом инициализации Code Igniter, потребуется файл wp-load word word.
Работает отлично.
Однако теперь моя $ _SESSION не работает. Я установил воспламенитель кода для использования сеансов базы данных и его регистрации значений сеанса, но он все еще не работает. Я не могу войти в панель администрирования системы Code Igniter, я не могу сделать что-нибудь, что требует сеансов, потому что сеансы не работают. ЛОЛ.
Любые идеи парней? Я не знаю, как это исправить.
Я сделал следующее, чтобы заставить это работать (у меня есть приложение Code Igniter в отдельном каталоге в каталоге WordPress) – то, что мне явно не нравится, это то, что мне пришлось изменить основной файл в WordPress.
Во-первых, я добавил имя файла cookie Code Igniter в массив $ no_unset в wp-includes / load.php. В моем случае это было ci_session:
$no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix','ci_session' );
Во-вторых, я понял, что функция add_magic_quotes WordPress искажает глобальный $ _COOKIE. Это привело к тому, что CodeIgniter заново создавал файл cookie при каждой загрузке страницы или перенаправлял и тем самым нарушал любую непрерывность. Итак, я прокомментировал эту строку в wp-includes.load.php (около строки 545)
//$_COOKIE = add_magic_quotes( $_COOKIE );
Затем, чтобы сохранить эту функцию в тактике для всех других файлов cookie, связанных с WordPress, я создал функцию array_walk, чтобы зациклиться на глобальном $ _COOKIE и применить add_magic_quotes ко всем куки, кроме моего в функции wp-includes / load.php
/** * 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');
После того, как я это сделал, у меня больше не было нескольких файлов cookie, хранящихся в моей таблице ci_sessions, и сеансы были успешно сохранены.
Надеюсь, это поможет!
Здесь объясняется, как WordPress не активирует переменные сеанса и возможное решение. К сожалению, похоже, что требуется модифицировать файлы ядра – в wp_unregister_GLOBALS
, похоже, не было никаких перехватчиков, которые бы помогли.