如果您已经将任何内容打印到浏览器,则无法执行重定向。(要进行重定向,必须向浏览器发送正确的标题。并且必须在任何输出之前发送标题。)
所以,若要执行任何重定向,就不能(也不应该)将此类代码直接放入模板中。应将其放置在functions.php
然后在钩子上跑。
而且发送没有操作集的表单不是最好的主意,这是一个安全问题。WP中已经有了一种机制,您应该使用它来处理此类请求。
所以,如果你想正确地做这件事,它可能看起来像这样。。。
在里面functions.php
文件:
function process_my_form() {
if ( ! empty($_POST[\'password\']) ) {
$redirect = ($_POST[\'password\']);
$redirect = str_replace(" ","-",$redirect);
$redirect = strtolower($redirect);
wp_redirect( "/bids/$redirect" );
die;
}
wp_redirect( \'<URL OF YOUR FORM>\' ); // redirect back to the form, so replace it with correct URL
die;
}
add_action( \'admin_post_process_my_form\', \'process_my_form\' );
add_action( \'admin_post_nopriv_process_my_form\', \'process_my_form\' );
在模板文件中:
<div class=\'row secureform__container\'>
<form id=\'securedownloads\' class=\'secureform\' method=\'post\' action=\'<?php echo esc_attr( admin_url(\'admin-post.php\') ); ?>\'>
<fieldset class=\'secureform__inner\'>
<label for=\'password\' class=\'secureform__label\'>Password:</label>
<input id=\'password\' type=\'text\' name=\'password\' maxlength=\'40\' class=\'secureform__input\'>
<input type=\'submit\' value=\'login\' class=\'secureform__submit\'>
<input type=\'hidden\' name=\'next\' value=\'\'>
<input type=\'hidden\' name=\'action\' value=\'process_my_form\'>
</fieldset>
</form>
</div>