¿Cuál es una forma fácil de mostrar un formulario de registro de usuarios en el front-end?
Estoy buscando una manera sencilla de colocar el formulario de registro de usuarios en el front-end de un sitio WordPress. Ya he usado wp_login_form() para colocar el formulario de inicio de sesión en el front-end, pero ahora necesito hacer lo mismo con el formulario de registro.
¿Alguna idea?

Jeff Starr escribió un gran tutorial sobre registro en el front-end, inicio de sesión y recuperación de contraseña
siguiendo un enfoque similar al sugerido por onetrickpony.
Así que tómalo como un seguimiento de su respuesta y como otro recurso que podría ayudarte a lograrlo:
http://digwp.com/2010/12/login-register-password-code/
Ahora tienes dos ejemplos de cómo codificar esto tú mismo y créeme, definitivamente vale la pena hacerlo de esta manera (a tu manera). No es tan difícil y te da libertad, flexibilidad y reutilización que ningún plugin puede ofrecer.

en caso de que quieras manejar esto por tu cuenta, aquí está lo que uso:
add_action('template_redirect', 'register_a_user');
function register_a_user(){
if(isset($_GET['do']) && $_GET['do'] == 'register'):
$errors = array();
if(empty($_POST['user']) || empty($_POST['email'])) $errors[] = 'proporciona un usuario y email';
if(!empty($_POST['spam'])) $errors[] = 'fuera spammer';
$user_login = esc_attr($_POST['user']);
$user_email = esc_attr($_POST['email']);
require_once(ABSPATH.WPINC.'/registration.php');
$sanitized_user_login = sanitize_user($user_login);
$user_email = apply_filters('user_registration_email', $user_email);
if(!is_email($user_email)) $errors[] = 'email inválido';
elseif(email_exists($user_email)) $errors[] = 'este email ya está registrado, bla bla...';
if(empty($sanitized_user_login) || !validate_username($user_login)) $errors[] = 'nombre de usuario inválido';
elseif(username_exists($sanitized_user_login)) $errors[] = 'el nombre de usuario ya existe';
if(empty($errors)):
$user_pass = wp_generate_password();
$user_id = wp_create_user($sanitized_user_login, $user_pass, $user_email);
if(!$user_id):
$errors[] = 'registro fallido...';
else:
update_user_option($user_id, 'default_password_nag', true, true);
wp_new_user_notification($user_id, $user_pass);
endif;
endif;
if(!empty($errors)) define('REGISTRATION_ERROR', serialize($errors));
else define('REGISTERED_A_USER', $user_email);
endif;
}
el código es casi idéntico al de la página de registro de usuarios.
luego añade tu formulario en tu plantilla:
<?php
if(defined('REGISTRATION_ERROR'))
foreach(unserialize(REGISTRATION_ERROR) as $error)
echo "<div class=\"error\">{$error}</div>";
// errores aquí, si los hay
elseif(defined('REGISTERED_A_USER'))
echo 'se ha enviado un email a '.REGISTERED_A_USER;
?>
<form method="post" action="<?php echo add_query_arg('do', 'register', home_url('/')); ?>">
<label>
Usuario:
<input type="text" name="user" value=""/>
</label>
<label>
Email:
<input type="text" name="email" value="" />
</label>
<label>
Borra este texto:
<input type="text" name="spam" value="some_crappy_spam_protection" />
</label>
<input type="submit" value="registrar" />
</form>
puedes crear un widget con esto, un shortcode o simplemente la plantilla de página habitual...

Se ve genial, aunque no parece funcionar. Sin embargo, encontré un plugin que funciona muy bien, así que gracias por la ayuda.

Cerca, pero no es exactamente lo que necesito. Necesito algo que pueda integrar fácilmente en mi plantilla existente.

Aquí hay un sitio que acabo de terminar de diseñar usando SimpleModal para el inicio de sesión... http://www.purevapes.com/ observa los enlaces de registro e inicio de sesión en la parte superior. El usuario nunca es sacado del front-end del blog. Puedes incorporarlos usando código HTML simple en tu plantilla, y redirigen al usuario a la página principal en lugar del panel de administración. Así que no estoy seguro de cómo esto no puede 'integrarse' en cualquier plantilla.

Me refería a "incluido" directamente en la página, no como una ventana modal.
Este es el plugin que acabo de encontrar para hacerlo: http://wordpress.org/extend/plugins/simplr-registration-form/

Ah, ya veo. Ni siquiera se me había ocurrido que la ventana modal podría ser un problema, pero ahora entiendo que hay situaciones donde es apropiada y otras donde no. Gracias por el enlace del plugin, lo agregaré a mi arsenal. Me alegro de que hayas encontrado tu respuesta :)

Gravity Forms es el mejor plugin de formularios de contacto para WordPress, en mi opinión. Su versión más reciente, en fase beta, incluye un complemento de registro de usuarios. Lo he probado y funciona genial. Eso sí, tiene un costo: $199 por una licencia de desarrollador.
Página de precios: http://www.gravityforms.com/purchase-gravity-forms/
Artículo del blog que habla sobre el complemento de registro de usuarios: http://www.gravityhelp.com/
Recomiendo ampliamente este plugin a la comunidad de WordPress.
Especificaciones detalladas:
Estas son algunas de las características del complemento de Registro de Usuarios:
- Registro de usuarios – Configura un formulario para registrar un usuario mapeando los campos del formulario con los campos disponibles en el registro de WordPress.
- Metadatos de usuario – Rellena fácilmente metadatos de usuario como biografía, ID de mensajería instantánea, nombre, apellido, así como metadatos personalizados según tus necesidades.
- Integración con BuddyPress – Rellena datos de campos de perfil de BuddyPress como parte del proceso de registro. Actualmente funciona con BuddyPress v1.2.6.
- Integración de pagos – Requiere un pago antes del registro. Incluye soporte para suscripciones de PayPal, y cambiar el rol del usuario o eliminarlo si se cancela la suscripción.
- Campo de contraseña – El complemento añade un campo de contraseña a Gravity Forms para usar en tus formularios. El campo incluye opción de confirmación y un verificador de fortaleza de contraseña.
- Autor de publicaciones – Integra el complemento de Registro de Usuarios con la creación de publicaciones en un solo formulario, asignando como autor al usuario registrado.
- Creación de sitios – Crea automáticamente un sitio en una instalación multisitio de WordPress y asigna a los nuevos usuarios como administradores del sitio.

Puedes utilizar el plugin Theme My Login

Parece que tu plugin podría funcionar muy bien, excepto que no puedo hacer que el formulario de registro funcione. El formulario de inicio de sesión se muestra bien, pero cuando intento ir al formulario de registro, simplemente me lleva al predeterminado de WordPress. ¿Hay alguna manera de mostrar solo el formulario de registro en la página?

Aquí hay una forma sencilla y efectiva de hacerlo:
Copia los nombres de los campos y cualquier otro elemento del formulario de registro actual de Wordpress. Asegúrate de que tu formulario personalizado tenga los mismos nombres de campos, incluyendo los ocultos, y luego simplemente dirige la acción del formulario a la URL de registro correcta: http://www.yourblog.com/wp-login.php?action=register - Luego podrías querer cambiar cómo redirige el formulario después del registro si no te gusta cómo se maneja por defecto.
También existe este plugin llamado Insite Login que te permite insertar el formulario de registro, de inicio de sesión y otros en las páginas de tu sitio: http://wordpress.org/extend/plugins/insitelogin/
Sin embargo, la primera solución debería hacer exactamente lo que necesitas.

En caso de que necesites más campos en tu formulario de registro, puedes utilizar el plugin Profile Builder
Te permite personalizar tu sitio web añadiendo formularios en el front-end para inicio de sesión, registro y edición de perfil mediante el uso de shortcodes.
