Wordpress - Пользовательская форма регистрации, перенаправление после - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть пользовательская форма регистрации.Я пытаюсь перенаправить пользователей на определенную страницу после их регистрации, но методы, которые я пробовал, не сработали, вот мой код - как я могу получить перенаправление после регистрации пользователя?РЕДАКТИРОВАТЬ: (JQuery или Javascript решение для этого тоже будет приемлемо)

<?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>

1 Ответ

1 голос
/ 03 февраля 2012

Ваш плагин не соответствует ожидаемому формату ловушек действий, который вы обычно используете. Здесь вам нужно подключить две разные функции для вашего плагина.

При необходимости можно нарисовать плагин, используя шорткод.

Другой подключится к ранней обработке WordPress, чтобы фактически сделать то, что он должен сделать, такой как добавление пользователя. Затем, если вы используете wp_redirect, это позволит вам перенаправить перед отправкой любого вывода в браузер.

Например, в моих плагинах я использую хуки:

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

И я создаю эти две функции, чтобы сделать то, что они должны делать, в файле моего плагина.

Возможно, вы захотите проверить API базы данных перехватчиков для получения дополнительной информации о перехватах:

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

Удачи

EDIT

Просто измените:

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

Для:

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

И вы были бы на пути к победе ... Это ужасно с точки зрения интеграции, я бы сделал это с помощью плагина, но он должен работать нормально ...

...