Redirigir después de iniciar sesión en Wordpress


Estoy creando un tema de wordpress personalizado basado en un sitio existente.

Quiero usar un tablero alternativo que he creado.

¿Cómo puedo dirigir al usuario a 'news.php' después de iniciar sesión en lugar de '/wp-admin/'?

--

EDITAR: Tener un Plug-in de trabajo para esto, pero la recompensa todavía está disponible para cualquiera que pueda encontrar una forma manual de hacer esto a través de funciones.php, ya que sería más seguro que usar un plug-in de terceros.

Author: Philip Kirkbride, 2011-11-15

12 answers

Esto debería resolver su problema. Adaptado de una respuesta encontrada aquí.

function admin_default_page() {
  return '/new-dashboard-url';
}

add_filter('login_redirect', 'admin_default_page');
 70
Author: Travis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-02 13:38:07

La respuesta aceptada está muy equivocada. Uno nunca debe modificar el núcleo de WordPress. No solo las ediciones se perderán en una actualización dada, algunos cambios que realice por capricho pueden comprometer otras funcionalidades o incluso poner en peligro la seguridad de su sitio.

Action Hooks & Filters se incluyen dentro del núcleo para permitir modificar la funcionalidad sin modificar el código.

Un ejemplo de uso de la login_redirect filtro para redirigir a ciertos usuarios se puede encontrar aquí y es una mucho solución 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 );
 23
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-25 20:52:27

Esto puede ayudar. Redirección de inicio de sesión de Peter

Redirige a los usuarios a diferentes ubicaciones después de iniciar y cerrar sesión.

Defina un conjunto de reglas de redirección para usuarios específicos, usuarios con roles específicos, usuarios con capacidades específicas y una regla general para todos los demás usuarios. Además, establezca una URL de redirección para después del registro. Todo esto se administra en Configuración > Redirecciones de inicio de sesión/cierre de sesión.

Puede usar la sintaxis [variable]username[/variable] en sus URLs para que el sistema construirá una URL dinámica en cada inicio de 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 su propia URL personalizada "variables"...

 12
Author: Vasanthan.R.P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-22 10:14:41
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 desea redirigir 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
  }
}
 7
Author: Leo Jiang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-21 04:40:37

El plugin Theme My Login puede ayudar - le permite redirigir a los usuarios de roles específicos a páginas específicas.

 2
Author: gArn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-15 20:49:12

Si tienes php 5.3+, puedes usar una función anónima como esta:

add_filter( 'login_redirect', function() { return site_url('news'); } );
 2
Author: Farahmand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-24 20:44:30

¡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 principales pueden quedar anulados y perderá todas sus modificaciones.

Como ya han dicho otros (Dan y Travis respuestas), la respuesta correcta es utilizar el login_redirect filtro.

 1
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-14 14:13:11

Por favor, pruebe 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;

}
 1
Author: Mohammad Altamash Ansari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-21 16:15:08
// 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
} }
 0
Author: Omprakash Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-17 12:35:44

Para redirigir globalmente después de un 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); ?> con su URL donde desea redirigir. La URL debe comenzar con http: / / y termina en / other wise page redirect to default location.

Haga lo mismo redireccionamiento de formulario después del registro con en el mismo archivo pero en la sección <form name="registerform">.

 0
Author: SYED FARHAN KARIM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-12 09:11:54
// 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`}
 0
Author: Lokesh Metta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-22 15:53:23

Las funciones.el archivo php no tiene nada que ver con la redirección de inicio de sesión, lo que debe considerar es el wp-login.php, en realidad puede cambiar toda la interfaz de inicio de sesión desde allí, y forzar a los usuarios a redirigir 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, presione Ctrl + F (en la ventana) Encuentre " wp-admin/" y cámbielo a la carpeta a la que desea redirigir después de iniciar sesión, aún en el mismo archivo Presione Ctrl + F, busque " admin_url "y cambie el nombre del archivo, el nombre de archivo predeterminado es" perfil.php"...después de guardar y dar una oportunidad.

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 usar el" plugin de registro-inicio de sesión " http://wordpress.org/extend/plugins/registration-login / , simplemente edite las url de redirección y los enlaces a donde desea redirigir después de iniciar sesión, y tendrá su propio perfil personalizado.

 -1
Author: Charming Prince,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-23 06:31:09