php - redirection - Redirigir después de iniciar sesión en Wordpress
wordpress redirects (12)
¡La respuesta aceptada claramente no es una buena respuesta! Puede resolver su problema por un tiempo, pero ¿qué sucederá la próxima vez que actualice su instalación de wordpress? Sus archivos centrales pueden ser anulados y perderá todas sus modificaciones.
Como ya se dijo por otros (Dan y Travis responde), la respuesta correcta es usar el filtro login_redirect
.
Estoy creando un tema personalizado de WordPress basado en un sitio existente.
Quiero usar un tablero alternativo que he creado.
¿Cómo puedo hacer que el usuario se dirija a '' news.php
'' después de iniciar sesión en lugar de '' /wp-admin/
''?
-
EDITAR: Tenga un complemento funcional para esto, pero la recompensa aún está disponible para cualquier persona que pueda encontrar una forma manual de hacerlo a través de functions.php, ya que sería más seguro que usar un complemento de terceros.
El archivo functions.php no tiene nada que ver con la redirección de inicio de sesión, lo que debería considerar es el archivo wp-login.php, en realidad puede cambiar la interfaz de inicio de sesión completa y obligar a los usuarios a redireccionar a sus páginas personalizadas en lugar del directorio / wp-admin /.
Abra el archivo con el Bloc de notas si usa Windows o cualquier editor de texto, Prese Ctrl + F (en la ventana) Busque "wp-admin /" y cámbielo a la carpeta a la que desea redireccionar después del inicio de sesión, aún en el mismo archivo Presione Ctrl + F, encuentra "admin_url" y cambia el nombre del archivo, el nombre de archivo predeterminado es "profile.php" ... después de guardar y probar.
if ( !$user->has_cap(''edit_posts'') && ( empty( $redirect_to ) || $redirect_to == ''wp-admin/'' || $redirect_to == admin_url() ) )
$redirect_to = admin_url(''profile.php'');
wp_safe_redirect($redirect_to);
exit();
O puede utilizar el "complemento de inicio de sesión de registro" http://wordpress.org/extend/plugins/registration-login/ , simplemente edite las URL de redireccionamiento y los enlaces a donde desea redirigir después de iniciar sesión, y usted '' Tengo tu propio perfil personalizado.
El plugin Theme My Login puede ser útil: le permite redirigir a los usuarios de roles específicos a páginas específicas.
Esto debería solucionar tu problema. Adaptado de una respuesta que se encuentra here.
function admin_default_page() {
return ''/new-dashboard-url'';
}
add_filter(''login_redirect'', ''admin_default_page'');
Esto puede ayudar. Redirección de acceso de Peter
Redirige a los usuarios a diferentes ubicaciones después de iniciar sesión y cerrar sesión.
Defina un conjunto de reglas de redirección para usuarios específicos, usuarios con funciones específicas, usuarios con capacidades específicas y una regla general para todos los demás usuarios. Además, configure una URL de redireccionamiento para el registro posterior. Todo esto se gestiona en Configuración> Redireccionamientos de inicio de sesión / cierre de sesión.
Puede usar la sintaxis
[variable]username[/variable]
en sus URL para que el sistema construya una URL dinámica cada vez que inicie sesión, reemplazando ese texto con el nombre de usuario del usuario. Además del nombre de usuario, hay "userslug", "homeurl", "siteurl", "postid-23", "http_referer" y también puede agregar sus propias "variables" URL personalizadas ...
La respuesta aceptada es muy incorrecta. Uno nunca debería modificar el WordPress Core. No solo se perderán ediciones en una actualización determinada, algunos cambios que realice por capricho pueden comprometer otras funcionalidades o incluso poner en peligro la seguridad de su sitio.
Los ganchos y filtros de acción se incluyen dentro del núcleo para permitir la modificación de la funcionalidad sin modificar el código.
here se puede encontrar un ejemplo del uso del filtro login_redirect
para redirigir a ciertos usuarios y es una solución mucho más robusta a su problema.
Para su problema específico, desea hacer esto:
function login_redirect( $redirect_to, $request, $user ){
return home_url(''news.php'');
}
add_filter( ''login_redirect'', ''login_redirect'', 10, 3 );
Para redirigir globalmente después del inicio de sesión exitoso, encuentre este código en wp-login.php, en la sección.
<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( ''wp-login.php'', ''login_post'' ) ); ?>" method="post">
<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
y reemplace <?php echo esc_attr($redirect_to); ?>
<?php echo esc_attr($redirect_to); ?>
con su URL donde desea redireccionar. La URL debe comenzar con http: // y termina en / otra página sabia redirigir a la ubicación predeterminada.
Haga lo mismo con la redirección de formulario después del registro en el mismo archivo pero bajo la sección <form name="registerform">
.
Por favor, intente esto, funciona para cualquier redirección en wordpress
add_filter(''woocommerce_login_redirect'', ''wc_login_redirect'');
function wc_login_redirect( $redirect_to ) {
$redirect_to = ''PUT HERE URL OF THE PAGE'';
return $redirect_to;
}
Si tienes php 5.3+, puedes usar una función anónima como esta:
add_filter( ''login_redirect'', function() { return site_url(''news''); } );
// Used theme''s functions.php
add_action(''login_form'', ''redirect_after_login'');
function redirect_after_login()
{
global $redirect_to;
if (!isset($_GET[''redirect_to'']))
{
$redirect_to = get_option(''sample-page'');
// sample-page = your page name after site_url
} }
// add the code to your theme function.php
//for logout redirection
add_action(''wp_logout'',''auto_redirect_after_logout'');
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
//for login redirection
add_action(''wp_login'',''auto_redirect_after_login'');
function auto_redirect_after_login(){
wp_redirect( home_url() );
exit();
`enter code here`}
add_action(''wp_head'',''redirect_admin'');
function redirect_admin(){
if(is_admin()){
wp_redirect(WP_HOME.''/news.php'');
die; // You have to die here
}
}
O si solo quieres redireccionar a otros usuarios:
add_action(''wp_head'',''redirect_admin'');
function redirect_admin(){
if(is_admin()&&!current_user_can(''level_10'')){
wp_redirect(WP_HOME.''/news.php'');
die; // You have to die here
}
}