Come reindirizzare gli utenti non registrati a una pagina specifica?
4 risposta
- voti
-
- 2014-01-31
Ecco 2esempi che dovraimodificare leggermenteperfarlofunzionareper letueesigenze specifiche.
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' ); function redirect_non_logged_users_to_specific_page() { if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { wp_redirect( 'http://www.example.dev/page/' ); exit; } }
Inseriscilonelfile dellefunzioni deltuotemafiglio,cambia l'ID o lo slug dellapaginae l'URL di reindirizzamento.
Potresti anche usare un codice come questo:
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.dev/your-page/', 301 ); exit; } }
Puoi aggiungereilmessaggio direttamente allapagina oppure,se desideri visualizzareilmessaggiopertuttigli utentinon registrati, aggiungilo al codice .
Here are 2 examples which you will need to modify slightly to get it working for your specific needs.
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' ); function redirect_non_logged_users_to_specific_page() { if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { wp_redirect( 'http://www.example.dev/page/' ); exit; } }
Put this in your child theme functions file, change the page ID or slug and the redirect url.
You could also use code like this:
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.dev/your-page/', 301 ); exit; } }
You can add the message directly to the page or if you want to display the message for all non logged in users, add it to the code.
-
Grazieper latua risposta Mi èpiaciuto questo `add_action ('template_redirect','redirect_to_specific_page'); function redirect_to_specific_page () { if (is_page ('http://mydomain.com/participate') &&!is_user_logged_in ()) { wp_redirect ("http://mydomain.com/login",301); Uscita; } } `ManonfunzionaThanks for you answer I did like this `add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }` But its not working
- 0
- 2014-01-31
- user3187719
-
Usa lapaginai.d o slug qui,non l'url http://mydomain.com/participate http://codex.wordpress.org/Conditional_TagsUse the page i.d or slug here, not the url http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags
- 0
- 2014-01-31
- Brad Dalton
-
is_page ('partecipa')is_page('participate')
- 0
- 2014-01-31
- Brad Dalton
-
- 2017-11-17
Sarebbemeglio:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
Ciò chefa è reindirizzare l'utente allapagina di accesso.Una voltaeffettuato l'accesso,l'utente viene reindirizzato allapaginaprotetta a cui stavatentando di accedereinizialmente.
Documentazione qui:
https://codex.wordpress.org/Function_Reference/auth_redirect
This would be better:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
What this does is redirect the user to the login page. Once logged in, the user is redirected back to the secure page they were trying to access initially.
Documentation here:
https://codex.wordpress.org/Function_Reference/auth_redirect
-
- 2014-01-30
Comepossiamo dirti dovemetterlo senon ci hai detto cosae dove vuoimostrarlo? Interopost? Pages? Partipersonalizzate dipagine? Scusa ...immagino che lamia sfera di cristallononfunzioni deltutto oggi.
Dato che sei,e ti cito: "unprincipiante di wordpress",dovrestipiuttostoimparare,piuttosto che chiedere una risposta diretta.
Per quanto riguarda dove dovresti leggereil link di riferimento 1. Questoti diràin qualefile devimetterlo.
Per quanto riguarda come farlo,dovrestiprima leggerei link di riferimento 2e 3.
Nel complesso dovrebbe assomigliare a questo:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Ovviamenteil codiceprecedente deveentrarein un ciclo . Puoi costruirlonelmodopiù complesso o semplice che desideri. Adesempio,invece del semplicetesto senon si èeffettuato l'accesso,èpossibile visualizzare adesempio l'interomodulo di registrazione o - come suggerirei - uno schermo divisoin cui l'utentepuò accedere (poiché l'utentepuò avere un accountma si è dimenticato di accedere) o registrarsi (senonne ha uno).
Aggiunto dopoi commenti di seguito:
Per reindirizzare usa
header
conwp_login_url
- dinuovo,controllai riferimenti 1e 2 di seguito:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Riferimento:
How can we tell you where to put it if you didn't tell us what and where you want to display it? Whole posts? Pages? Custom parts of pages? Sorry... I guess my crystal ball isn't quite working today.
Since you are, and I quote you: "a newbie to wordpress" you should rather learn, than to ask for direct answer.
As for where you should read the reference 1 link. This will tell you which file you need to put it in.
As for how to do it you should first read reference link 2 and 3.
Overall it should look something like this:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Of course the above code needs to go into a loop. You can build it up as complex or as simple as you want. For example instead of simple text if not logged in you can display whole sign up form for example or - as I would suggest - a divided screen where user can log in (since user can have an account but forgot to sign in) or sign up (if he doesn't have one).
Added after comments below:
To redirect use
header
with thewp_login_url
- again, check references 1 and 2 below:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Reference:
-
In realtànon conosco lafunzione su wordpress che restituisce l'URL oilpermalink richiesto.E riguardo almessaggio di visualizzazione,lascialo,voglio solo reindirizzarli quando richiedono un determinato URL senzaessere registrati.Actually i don't know the funtction on wordpress that returns the requested URL or permalink. And about the dispaly message, leave it, I want to just want to redirect them when they request for certain URL without being logged.
- 0
- 2014-01-31
- user3187719
-
possofarlo con $pagenow?can I do it with $pagenow?
- 0
- 2014-01-31
- user3187719
-
@ user3187719 hamodificato lamia risposta originalee ha aggiunto la soluzioneperil reindirizzamento.PS.`$pagenow`?Stai cercando di uccidere unamosca con un cannone sicuro chefunzionerà,maperché è così complesso?Sii semplice.PS2:impara PHPe WP Codex.@user3187719 edited my original answer and added the solution to redirect. PS. `$pagenow`? You are trying to kill a fly with a cannon sure it will work, but why so complex? Keep it simple. PS2: Learn PHP and WP Codex.
- 0
- 2014-01-31
- Borek
-
- 2014-12-13
Nonpuoi reindirizzare a unapagina specifica,ma ogni utente chenon haeffettuato l'accesso verrà reindirizzato alla schermata di accesso.
<?php auth_redirect(); ?>
Riferimentoper Wordpress:
auth_redirect()
Soloper citare un'altra soluzione.
You can't redirect to a specific page, but every non-logged-in user will be redirected to Log-In Screen.
<?php auth_redirect(); ?>
Wordpress Reference:
auth_redirect()
Just to mention another solution.
Come reindirizzaregli utentinon registrati che richiedono unapagina/URL specifico a un'altrapagina/URLe visualizzare unmessaggio come "solopermembri".So che è abbastanzafacile codificare usando lafunzione! Is_user_logged_in ()manon so come codificarloperché sono unprincipiante di WordPress.Prego di dirmiilfilepermettere ancheil codice.