Supporto » Funzionalità = Plugin » Programmare creazione utenza

  • Buongiorno a tutti. Avrei una curiosità su una funzione che se esistesse mi aiuterebbe.

    Ho un sito scolastico con contenuti personalizzati in base ai ruoli. Se esistesse una funzione che mi permetterebbe di creare un utenza (quindi no registrazione) e abilitare l’accesso in data X e si chiuda in data Y mi sarebbe di grandissimo aiuto, soprattutto quando saremo chiusi per le ferie. Perchè se creo l’utenza oggi, l’accesso avviene immediatamente, però avrei la necessità di crearla oggi ed essere abilitata alla navigabilità del sito tipo tra 1 settimana.

    Attualmente utilizzo il pluging Expire Users per terminare l’accesso, ma devo essere lì sul sito ogni giorno a gestire gli accessi manualmente.

    Grazie a chiunque risponderà

Stai visualizzando 8 risposte - dal 1 al 8 (di 8 totali)
  • Ciao @bimmer525d,

    È fantastico conoscerti. Sono Matteo.

    Non penso ci siano plugin di questo tipo. Per aiutarti ulteriormente però, posso chiederti esattamente per quale uso desideri questa funzionalità?

    Per qualsiasi domanda, resto a disposizione.

    A presto.
    Matteo S.

    bimmer525d

    (@bimmer525d)

    Buon pomeriggio @matteospi

    In pratica gestisco una biblioteca virtuale di 2 scuole private per cui lavoro e sostanzialmente ricevo ogni giorno i registri cartacei che rimangono in segreteria didattica con i calendari delle persone che iniziano i corsi da una data X ad una data Y dove l’utente termina i corsi e quindi disattivazione account.
    Io ogni giorno attualmente mi vado a guardare questi registri e vado a segnarmi le utenze che iniziano oggi o domani, creandole e rendendole attive oggi stesso. Però sarebbe utile che nello stesso momento in cui aggiornano i registri cartacei, dove io creo l’utenza in data odierna, l’utenza venga abilitata nella data che io imposto, tipo il 12 agosto e termina tipo il 30 ottobre.

    • Questa risposta è stata modificata 2 settimane fa da bimmer525d.
    Andrea Porotti

    (@andreaporotti)

    Ciao @bimmer525d,

    potresti dare un’occhiata ai plugin per la gestione delle membership, ce ne sono diversi nella directory di WordPress: https://wordpress.org/plugins/search/membership/.

    Una membership è solitamente limitata nel tempo, per cui hai una data di inizio e una di fine. Resta da vedere se almeno uno di questi plugin ti consente di creare manualmente gli utenti dall’admin “prima” che questi possano fare login sul sito.

    L’alternativa, per avere qualcosa di più mirato, è sviluppare un plugin dedicato che si interfacci con la gestione utenti di WordPress.

    Ciao @andreaporotti
    Ho già controllato e tutti hanno una data di termine, ma inizio al momento della creazione account. No postdatato.

    Purtroppo non saprei come iniziare a muovermi per creare un plugin apposito. Sapresti darmi delle indicazioni in merito? Sono stato programmatore ai tempi, ma non mi sono mai cimentato nei plugins

    Spiego la mia idea che può essere semplice ma altrettanto funzionale.

    Ho trovato il codice che mi permette di creare un utente inserendolo in functions.php del tema.
    Se io volessi eseguire quel codice con la condizione che sono le ore HH:mm:ss in data YY-mm-dd? Prima e dopo tale data non deve seguire quella funzione.

    Come posso muovermi?

    Il codice base per la creazione dell’utente è questo:

    function fb_wp_insert_user() {
    	$user_data = array(
    		'ID' => '',
    		'user_pass' => 'dummy',
    		'user_login' => 'dummy',
    		'user_nicename' => 'Dummy',
    		'user_url' => '',
    		'user_email' => 'dummy@example.com',
    		'display_name' => 'Dummy',
    		'nickname' => 'dummy',
    		'first_name' => 'Dummy',
    		'user_registered' => '2020-07-23 18:31:00',
    		'role' => get_option('default_role') // Use default role or another role, e.g. 'editor'
    	);
    	
    	$user_id = wp_insert_user( $user_data );
    }
    add_action( 'admin_init', 'fb_wp_insert_user' );

    Ho provato a cambiare una data e un orario anteriore a quello attuale, ma l’utente me lo registra ugualmente in database, fregandosene altamente che non è 23 luglio.

    Moderatore Cristiano Zanca

    (@cristianozanca)

    Salve bimmer525d

    In WordPress la gestione degli eventi legata ad una data/orario viene fatta con WP-Cron
    https://developer.wordpress.org/plugins/cron/

    che ha questa caratteristica:

    WP-Cron does not run constantly as the system cron does; it is only triggered on page load.

    la domanda era:

    Se esistesse una funzione che mi permetterebbe di creare un utenza (quindi no registrazione) e abilitare l’accesso in data X e si chiuda in data Y mi sarebbe di grandissimo aiuto

    è possibile farlo utilizzando i servizi cron del proprio hosting, non è possibile farlo solamente in WordPress

    Ci sono riuscito con una condizionale tra date. Il risultato è perfetto. Funziona e ho appena testato 3 utenti creati nelle date stabilite (ovviamente in data odierna in 3 orari differenti).

    Potete chiudere il post.

    NB.: Per chi ne avesse bisogno, ho creato questa condizionale, ma gli orari differiscono in base al server. Per esempio il mio va 3 ore indietro e quindi la condizionale deve dare una data con orario 3 ore prima. Ma se dovete lavorarci semplicemente con le date, impostate 00:00:00 e non avete alcun problema di calcoli, come me.

    function fb_wp_insert_user() {
    	$event_date = '2020-07-23 08:00:00'; //Impostare 3 ore prima per il GMT SERVER
    		$event_date = new DateTime($event_date);
    		$today_date = new DateTime();
    		if ($event_date <= $today_date)
     			{
    				$user_data = array(
    					'ID' => '',
    					'user_pass' => '3dummy',
    					'user_login' => '3dummy',
    					'user_nicename' => 'Dummy3',
    					'user_url' => '',
    					'user_email' => 'dummy3@example.com',
    					'display_name' => 'Dummy3',
    					'nickname' => 'dummy',
    					'first_name' => 'Dummy',
    					'user_registered' => '2020-07-23 11:00:00',
    					'role' => 'editor'
    				);
    				$user_id == wp_insert_user( $user_data );
    			} 
    	}
    add_action( 'admin_init', 'fb_wp_insert_user' );

    Spero possa essere di aiuto a qualcun altro.

    • Questa risposta è stata modificata 1 settimana, 5 giorni fa da bimmer525d.
    Moderatore Cristiano Zanca

    (@cristianozanca)

    L’azione admin_init fa partire la funzione fb_wp_insert_user solo quando viene visualizzata una schermata di back-end (admin):

    Fires as an admin screen or script is being initialized.

    Note, this does not just run on user-facing admin screens. It runs on admin-ajax.php and admin-post.php as well.

    https://developer.wordpress.org/reference/hooks/admin_init/

    quindi la riuscita dei test probabilmente è legata al fatto che durante il test sono state caricate le pagine di admin dell’installazione WordPress

    Come detto precedentemente, wp-cron è lo strumento di WP per gestire gli eventi cronologicamente, per funzionare deve essere caricata una pagina

    WP-Cron works by checking, on every page load, a list of scheduled tasks to see what needs to be run. Any tasks due to run will be called during that page load.

    https://developer.wordpress.org/plugins/cron/

    per questo motivo il consiglio è di legare l’avvio di una funzione WP ad uno strumento cron messo a disposizione dal proprio hosting

Stai visualizzando 8 risposte - dal 1 al 8 (di 8 totali)
  • Devi essere collegato per rispondere a questo topic.