我已经创建了两页——Contribute Page &;Checkout Page.
在…上Contribute Page 我有以下代码:
<?php
if(isset($_POST[\'submitnow\'])) {
global $wpdb;
$wpdb->insert(
\'wp9c_treetweet\',
array(
\'name\' => $_POST[\'aname\'],
\'amt\' => $_POST[\'aamt\'],
\'dept\' => $_POST[\'adept\']
),
array(
\'%s\',
\'%d\',
\'%s\'
)
);
}
?>
<form action="" method="POST" id="addcourse">
<label>Name:<input type="text" name="aname" size="30" required></label>
<label>Amount:<input type="text" name="aamt" size="30" required></label>
<label>Department:<input type="text" name="adept" size="30" required></label>
<input type="submit" name="submitnow" id="addcoursesubmit" value="Submit">
</form>
此代码工作正常,正在数据库中正确插入表单数据。
将此页面重定向到Checkout Page 我在中添加了以下代码functions.php:
function redirect_from_checkout() {
if( !isset( $_POST[\'submitnow\'] ) )
return;
wp_redirect( home_url( \'/checkout/\' ) );
exit;
}
add_action( \'template_redirect\', \'redirect_from_checkout\' );
在中添加重定向代码后
functions.php 重定向工作正常,但表单数据未插入到数据库表中。
请帮助我解决问题。
SO网友:Johansson
根据WordPress Codex 关于template_redirect
挂钩:
在WordPress确定要加载哪个模板页面之前,这个操作挂钩就会执行。
因此,在加载模板之前,您将用户重定向到另一个页面,而表单根本不会加载模板。你可以用另一个钩子template_redirect
, 例如wp_footer
.
您还可以在将表单插入数据库后立即重定向用户,方法是将代码更改为:
<?php
if(isset($_POST[\'submitnow\'])) {
global $wpdb;
$wpdb->insert(
\'wp9c_treetweet\',
array(
\'name\' => $_POST[\'aname\'],
\'amt\' => $_POST[\'aamt\'],
\'dept\' => $_POST[\'adept\']
),
array(
\'%s\',
\'%d\',
\'%s\'
)
);
wp_safe_redirect(home_url( \'/checkout/\' ));
exit();
}
?>
这样,如果插入表单,用户将在之后被重定向。