Итак, я поговорил с разработчиком WordPress (https://core.trac.wordpress.org/ticket/40476#ticket), и он сказал:
"Много лет назад WordPress слепо следовал за PHP, соглашаясь с тем, что все суперглобальные значения должны быть сокращены.
Позже PHP перевернул эту идею на что-то более вменяемое, что вы видите сегодня, но ущерб был нанесен, WordPress как приложение существовало достаточно долго, и было достаточно существующих плагинов и тем, основанных на WordPress, создавая единую разумную среду, которая Изменение WordPress также может нанести непоправимый ущерб этим сайтам - привнести уязвимости безопасности, исказить контент и массу других забавных вещей.
https://core.trac.wordpress.org/ticket/18322 - это наш билет для отслеживания этого и достижения чего-то более разумного - в краткосрочной (и более долгосрочной перспективе) мы просим, чтобы при обращении к переменным $ _POST вы делали это так: $ myvar = wp_unslash ($ _POST ['variable']); так что когда-нибудь мы сможем получить $ _POST в качестве неопрятного массива.
относительно ответа, данного здесь:
$temp_POST = $_POST;
require '../www/wp_dir/wp-load.php';
$_POST = $temp_POST;
Пожалуйста, не делай этого. Вы просто открываете себя проблемам безопасности и неожиданным вещам, происходящим с вашим контентом, когда WordPress ожидает, что значения будут урезаны.
Вместо этого просто используйте wp_unslash()
, и если вам действительно нужна копия $ _POST для работы над собой, сделайте это так: $my_POST = wp_unslash( $_POST );
.
Я должен также добавить - я ожидаю, что вы делаете это, потому что вы пытаетесь использовать конечную точку API для чего-то, я настоятельно рекомендую переключиться на использование REST API, представленного в WordPress 4.7, поскольку это позволяет нам предложить разработчикам гораздо более последовательный опыт.
«