好的,所以我过去经常在Wordpress中开发,但去年一直在使用Codeigniter。显然,有时Codeigniter比Wordpress更适用于某种情况,反之亦然,但我不得不在下一个项目中使用Wordpress。
有了MVC,让所有的“回声”出现在视图中,让所有的处理出现在控制器中,这是非常有意义的。。但现在回到Wordpress,我觉得函数内部的回声很奇怪。
我正在制作一个注册页面(大部分代码来自here 但我还没有将其更改为自定义字段等),其中HTML位于模板页面中,带有do_action (\'process_customer_registration_form\');
所有的处理和回声都是在功能上完成的。php:
function registration_process_hook() {
if (isset($_POST[\'adduser\']) && isset($_POST[\'add-nonce\']) && wp_verify_nonce($_POST[\'add-nonce\'], \'add-user\')) {
// die if the nonce fails
if ( !wp_verify_nonce($_POST[\'add-nonce\'],\'add-user\') ) {
wp_die(\'Sorry! That was secure, guess you\\\'re cheatin huh!\');
} else {
// auto generate a password
$user_pass = wp_generate_password();
// setup new user
$userdata = array(
\'user_pass\' => $user_pass,
\'user_login\' => esc_attr( $_POST[\'user_name\'] ),
\'user_email\' => esc_attr( $_POST[\'email\'] ),
\'role\' => get_option( \'default_role\' ),
);
// setup some error checks
if ( !$userdata[\'user_login\'] )
$error = \'A username is required for registration.\';
elseif ( username_exists($userdata[\'user_login\']) )
$error = \'Sorry, that username already exists!\';
elseif ( !is_email($userdata[\'user_email\'], true) )
$error = \'You must enter a valid email address.\';
elseif ( email_exists($userdata[\'user_email\']) )
$error = \'Sorry, that email address is already used!\';
// setup new users and send notification
else{
$new_user = wp_insert_user( $userdata );
wp_new_user_notification($new_user, $user_pass);
}
}
}
if ( $new_user ) : ?>
<p class="alert"><!-- create and alert message to show successful registration -->
<?php
$user = get_user_by(\'id\',$new_user);
echo \'Thank you for registering \' . $user->user_login;
echo \'<br/>Please check your email address. That\\\'s where you\\\'ll recieve your login password.<br/> (Be sure to check your spam folder)\';
?>
</p>
<?php else : ?>
<?php if ( $error ) : ?>
<p class="error"><!-- echo errors if users fails -->
<?php echo $error; ?>
</p>
<?php endif; ?>
<?php endif;
}
add_action(\'process_customer_registration_form\', \'registration_process_hook\');
我的问题是。。。在WP中,最好的做法是让内容在一个动作函数中回响,就像在这个函数的末尾一样?为什么不在同一页中设置一个标准if(isset(submit))情况并处理表单?我知道,通过将其移动到函数,它将分离逻辑,但它也在函数中响应。。似乎不对。
谢谢