Не могу заставить работать админ-пост.php в WordPress
Я просмотрел несколько онлайн-документов по этому вопросу, а также просмотрел посты на этом сайте, но все еще не может заставить мои запросы администраторов работать. В своем конструкторе меню администратора я добавляю следующие действия:
add_action ('admin_post_modify_release_request', 'handle_release_posting');
со следующей функцией для обработчика:
function handle_release_posting(){
print_r($_POST);
echo "<br/>incoming:" . var_export($_POST, TRUE) . "<br/>";
?> <div class="wrap">
<?php screen_icon(); ?>
<div class="release_response">Posting response goes here.</div>
</div>
<?php
}
Мой HTML-элемент формы такой: " method="post">
с другими входами плюс...
<input type="hidden" id='action' name="action" value="modify_release_request">
<input type="submit" value="Modify Release"></div>
</form>
Поведение при отправке запроса заключается в вызове http://joomla.tenasys.lan/wp-admin/admin-post.php
с полностью пустой страницей:
<html><head></head><body></body></html>
Что я пропустил? Что я делаю неправильно?
1 ответ
Почему-то мне не удалось использовать скрытый ввод для передачи параметра действия, например так:
Альтернативное решение было добавить параметр действия в URL, как это:
<!-- language: lang-html -->
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>?action=add_foobar" method="post">
Вот целое решение:
<!-- language: lang-php -->
function sandbox_show_plugin(){
global $post;
?>
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>?action=add_foobar" method="post">
<input name="name" type="text" placeholder="Enter email">
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<?php
}
//Hooks
add_shortcode( 'sandbox_plugin_shortcode', 'sandbox_show_plugin' );
function prefix_admin_add_foobar(){
status_header(200);
var_dump($_POST);
// wp_redirect( 'http://any.url/',302 );
die("Server received '{$_POST['name']}' from your browser.");
}
add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );
add_action( 'admin_post_nopriv_add_foobar', 'prefix_admin_add_foobar' ); // this is for non logged users