不要将表单发送到必须手动加载WordPress的自定义PHP脚本,而应该将from直接发送到WordPress页面。
你可以使用admin_post_{action}
hook, 类似于admin-ajax.php works, 但用于处理GET和POST请求。
表格:
<form action="<?php echo admin_url( \'admin-post.php\' ); ?>" method="post">
<input type="hidden" name="action" value="my_action">
<input type="submit" value="Submit">
</form>
以及行动:
add_action( \'admin_post_my_action\', \'cyb_my_action\' );
add_action( \'admin_post_nopriv_my_action\', \'cyb_my_action\' );
function cyb_my_action() {
// Process your form here
}
您也可以将表单发送到WordPress中的任何其他页面,并在中处理表单
init
动作钩(或任何其他你认为更适合你需要的动作,但是
init
通常是处理自定义表单的良好操作)。
例如,如果表单嵌入到任何类型的帖子(包括页面)中,则可以将表单发送到自身:
<form id="cyb-contact-form" action="<?php echo esc_url(get_the_permalink()); ?>" method="post">
</form>
他们,你可以在
init
行动挂钩:
add_action( \'init\', \'cyb_process_my_form\' );
function cyb_process_my_form() {
// Process your form here
}