2012-02-03 113 views
0

我有一個自定義註冊表單。我試圖在用戶註冊後將用戶重定向到特定頁面,但我嘗試的方法沒有奏效,這裏是我的代碼 - 在用戶註冊後如何獲得重定向?:Wordpress - 自定義註冊表格,重定向後

編輯: (一個jQuery或Javascript solutuion因爲這將是太接受)

<?php 
/* Load registration file. */ 
require_once(ABSPATH . WPINC . '/registration.php'); 

/* If user registered, input info. */ 
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'adduser') { 
    $user_pass = wp_generate_password(); 
    $userdata = array(
     'user_pass' => esc_attr($_POST['user_pass']), 
     'user_login' => esc_attr($_POST['user_name']), 
     'user_email' => esc_attr($_POST['email']), 
    ); 

    if (!$userdata['user_login']) 
     $error = __('A username is required for registration.', 'frontendprofile'); 
    elseif (username_exists($userdata['user_login'])) 
     $error = __('Sorry, that username already exists!', 'frontendprofile'); 
    elseif (!is_email($userdata['user_email'], true)) 
     $error = __('You must enter a valid email address.', 'frontendprofile'); 
    elseif (email_exists($userdata['user_email'])) 
     $error = __('Sorry, that email address is already used!', 'frontendprofile'); 

    else{ 
     $new_user = wp_insert_user($userdata); 
     update_usermeta($new_user, 'fullname', esc_attr($_POST['fullname'] )); 
     update_usermeta($new_user, 'publication', esc_attr($_POST['publication'] )); 
     update_usermeta($new_user, 'usertype', esc_attr($_POST['usertype'] )); 
     wp_new_user_notification($new_user, $user_pass); 
     wp_redirect('http://www.google.com'); 
    } 
} 

?> 

<form method="post" id="adduser" class="user-forms" action="http://<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>"> 
    <p class="form-usertype"> 
    <strong>TYPE</strong> 
    <?php $usertype = get_the_author_meta('usertype', $current_user->ID); ?> 
    <ul> 
    <li> 
     <input class="radio" value="Media" name="usertype" <?php if ($_POST['usertype'] == 'Media') { ?>checked="checked"<?php }?> type="radio" /> 
     <span><?php _e('Media', 'frontendprofile'); ?></span> 
    </li> 
    <li> 
     <input class="radio" value="Freelance" name="usertype" <?php if ($_POST['usertype'] == 'Freelance' ) { ?>checked="checked"<?php }?> type="radio" /> 
     <span><?php _e('Freelance', 'frontendprofile'); ?></span> 
    </li> 
    <li> 
     <input class="radio" value="Student" name="usertype" <?php if ($_POST['usertype'] == 'Student') { ?>checked="checked"<?php }?> type="radio" /> 
     <span><?php _e('Student', 'frontendprofile'); ?></span> 
    </li> 
    </ul> 
    </p> 
    <!-- .form-usertype --> 

    <p class="form-username"> 
    <strong>FULL NAME</strong> 
    <input class="text-input" name="user_name" type="text" id="user_name" value="<?php if ($error) echo wp_specialchars($_POST['user_name'], 1); ?>" /> 
    </p> 
    <!-- .form-username --> 

    <p class="form-email"> 
    <strong>E-MAIL</strong> 
    <input class="text-input" name="email" type="text" id="email" value="<?php if ($error) echo wp_specialchars($_POST['email'], 1); ?>" /> 
    </p> 
    <!-- .form-email --> 

    <p class="form-password"> 
    <strong>CONFIRM E-MAIL</strong> 
    <input type="text" name="user_pass" id="user_pass" class="input" value="" size="20" tabindex="10" /> 
    </p> 

    <p class="form-publication"> 
    <strong>MEDIA OUTLET</strong> 
    <input class="text-input" name="publication" type="text" id="publication" value="<?php if ($error) echo wp_specialchars($_POST['publication'], 1); ?>"/> 
    </p> 
    <!-- .form-publication --> 

    <p class="form-submit"> <?php echo $referer; ?> 
    <input name="adduser" type="submit" id="addusersub" class="submit button" value="<?php if (current_user_can('create_users')) _e('Add User', 'frontendprofile'); else _e('Register', 'frontendprofile'); ?>" /> 
    <?php wp_nonce_field('add-user') ?> 
    <input name="action" type="hidden" id="action" value="adduser" /> 
    </p> 
    <!-- .form-submit --> 

</form> 

<script type="text/javascript"> 
$(document).ready(function(){ 

    $("input[name$='usertype']").click(function(){ 

    var radio_value = $(this).val(); 

    if(radio_value=='Media') { 
    $("p.form-publication").show(); 
    } 
    else if(radio_value=='Student') { 
    $("p.form-publication").hide(); 
    } 
    else if(radio_value=='Freelance') { 
    $("p.form-publication").hide(); 
    } 
    }); 
}); 
</script> 
+0

什麼不管用?你有一個重定向到谷歌它不重定向? – Iznogood 2012-02-03 19:28:56

+0

是的重定向不起作用。 – 2012-02-03 19:46:51

回答

1

你撐着不尊重,你會正常使用預期的行動掛鉤格式。你必須在這裏做的是鉤住你的插件的兩個不同的功能。

一個人會在必要時繪製插件,例如使用簡碼。

另一個會掛鉤wordpress的早期處理,以實際完成它要做的事情,比如添加一個用戶。然後,如果您使用wp_redirect,它將允許您在將任何輸出發送到瀏覽器之前重定向。

例如,在我的pluggins,我使用了鉤:

add_action('init', 'my_function_to_process'); 
add_action('template_redirect', 'my_function_to_draw'); 

而且我創造這兩個函數來完成他們在我撐着的文件做什麼。

你可能想看看掛鉤數據庫API的更多信息,掛鉤:

http://codex.wordpress.org/Plugin_API/Action_Reference

好運

編輯

只要改變:

wp_redirect('http://www.google.com'); 

爲:

?><script>window.href.location = "http://www.google.com";</script><?php exit(); 

而且你會用自己的方式贏得勝利......這是在整合方面醜,我有一個撐着做了,但它應該工作的罰款...

+0

它不是一個插件。它是一個前端註冊表單,允許在網站設計中進行註冊,而不是重定向到wp-login.php註冊。不知道這是否會改變任何東西:) – 2012-02-03 19:48:43

+0

仍然改變了一切,你必須找到一種方法來包括你的代碼之前,wordpress繪圖開始發生。如果處理代碼發生在wordpress開始繪製之後,您不能重定向,因爲標題已經發送了......當然,這不是一個插件,但您必須找到一種方法來加載該處理代碼。一個插件不會是一個壞主意,因爲插件早期加載... – 2012-02-03 19:51:52

+0

是否可以添加jQuery或按「提交後,發送用戶到mywebpage.com」後按「提交」? – 2012-02-03 20:53:08