php - 如何返回 POST 值并在网站上打印?(wordpress)
问题描述
这是 page-user-form.php
<form action="<?php echo esc_attr( admin_url('admin-post.php') ); ?>" method="POST" id="userForm">
<input type="hidden" name="action" value="user_form2">
<p><label for="form-title">pass name:
<input type="text" name="pass" id="form-title">
</label></p>
<input type="submit" value="submit">
</form>
这是wordpress中的functions.php文件
function user_form() {
check_admin_referer( 'user_form2' );
global $wpdb, $inputValue;
$inputValue = $_POST['pass'];
$query = $wpdb->prepare("SELECT * FROM wp_kboard_board_content WHERE title = %s", $inputValue);
$query_result = $wpdb->get_results($query);
if($inputValue){
wp_redirect( esc_url( home_url( '/wordpress/result/' )));
exit;
}
return $query_result;
}
//user_form();
add_action( 'admin_post_nopriv_user_form2', 'user_form' );
add_action( 'admin_post_user_form2', 'user_form' );
add_shortcode('my_db_print','my_db_print_function');
function my_db_print_function(){
ob_start();
$results = user_form();
echo "<table border='1'><tr><th>title</th><th>content</th><th>date</th><th>category1</th></tr>";
foreach ( $results as $result )
{
echo"<tr>";
echo"<td>".$result->title."</td>";
echo"<td>".$result->content."</td>";
echo"<td>".$result->date."</td>";
echo"<td>".$result->category1."</td>";
echo"<tr>";
}
echo"</table>";
return ob_get_clean(); */
}
我想根据用户输入的值输出特定的数据库数据(mysql)。($_POST['pass'])但即使有数据,结果也是 NULL。
我不知道哪一部分是错的。有人请帮帮我!!!
解决方案
我从我的评论中做出了回答,因为它似乎是正确的解决方案:
我可以看到调用 user_form 的两种不同情况。
a) 当表单 #userForm 被实际提交时。add_action-lines 应该触发它。它返回裸数据,但不生成任何输出。看看https://developer.wordpress.org/reference/hooks/admin_post_action/。
b) 完全不相关,它是从 my_db_print_function 调用的,它是一个短代码解析器。这意味着,如果在帖子中有一个短代码[my_db_print]
,则内容将被函数的结果替换。
但是在显示帖子的这一点上,里面有什么$_POST
吗?很可能不是;除了提交的结果页面#userForm
正在显示帖子。但是如果你稍后再看帖子,$_POST
就会是空的。简而言之:存在一个概念性错误。从那里打电话my_db_print_function
而不是反过来。
推荐阅读
- javascript - 使用 NodeJS + express 实现无限滚动。附加 HTML 标记时遇到问题
- oauth-2.0 - 无需用户交互即可访问 Google API
- puppet - 使用螺栓重新启动
- .net - 请求需要很长时间才能远程到达服务器但在本地速度很快
- forms - 产品/服务订单的大表格或小表格
- reactjs - React.js:如何从代码中关闭 headlessui 披露模式?
- github - 添加模板后,有没有办法在 GitHub 中自定义新问题页面?
- python - Pandas groupby: date_from / date_to or date range 获取重叠间隔并对其进行优先级排序
- arrays - 扫描一维数组中的多个字符串数据
- windows - Android Studio 中的 Pepper API 7 模拟器产生太多线程?