【发布时间】:2020-06-04 23:40:44
【问题描述】:
我目前正在尝试将调试页面添加到我的网站。这个页面只是专门用于运行我的插件完成的一些任务并在同一页面上输出一些结果。
我目前在我的 Wordpress 管理员中有一个单独的页面,该页面包含一个表单和按钮,应该链接到一个函数,该函数将执行各种步骤,然后返回一个必须在该页面上打印的值。
这是页面和按钮的当前代码:
function actu_admin_menu_option()
{
add_menu_page('Scripts', 'Sahar actus plugin', 'manage_options', 'actu-admin-menu', 'actu_scripts_page', '', 200);
}
add_action('admin_menu', 'actu_admin_menu_option');
// HTML page of the plugin
function actu_scripts_page()
{
?>
<div class="wrap">
<h2>Sahar actus plugin</h2>
<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
<input type="hidden" name="action" value="start_test">
<input class="button button-primary" type="submit" value="Start test">
</form>
</div>
<?php
}
function start_test()
{
return ("test started!");
}
add_action( 'admin_post_start_test', 'start_test' );
我想要例如在单击按钮时运行以下函数,然后在页面上输出返回值。
function start_test()
{
return("test started!");
}
所以当我按下按钮时,我想要“测试开始!”要打印在页面上,当前单击按钮会将我重定向到/wp-admin/admin-post.php,这是一个空白页面。
我不知道最好的做法是什么,我是否应该在我的按钮上发出 ajax 请求以运行该函数,然后从该 ajax 调用中获取返回值?还是有更好的方法来解决这个问题?
感谢您的帮助,祝您有美好的一天
编辑:更新代码,没有错误,但输出仍未打印到页面或控制台。
function actu_scripts_page()
{
?>
<div class="wrap">
<h2>Sahar actu plugin</h2>
<form action="" method="post">
<?php wp_nonce_field('do_test', '_test_nonce') ?>
<input type="hidden" name="action" value="start_test">
<input class="button button-primary" type="submit" value="Start test">
</form>
</div>
<?php
if (isset($_POST['start_test'])) {
if (isset($_POST['start_test'])) {
if (!wp_verify_nonce($_POST['_test_nonce'], 'do_test')) {
// error in nonce
} else {
start_test();
}
}
}
?>
<?php
}
function start_test()
{
echo("hhhhh");
die(); // tried with and without, no difference
}
add_action('admin_post_start_test', 'start_test');
【问题讨论】: