Qual è il modo corretto per ottenere l'ID dell'utente loggato in un plugin?

28 nov 2012, 19:18:12
Visualizzazioni: 13.5K
Voti: 0

Ho bisogno di ottenere l'ID dell'utente loggato all'interno del mio plugin.

È questo il modo corretto?

$root = dirname(dirname(dirname(dirname(__FILE__))));
if (file_exists($root.'/wp-load.php')) {
require_once($root.'/wp-load.php');
} 
$user_id = get_current_user_id();

Otto afferma che non dovremmo caricare il file wp-load.php poiché non sappiamo dove si trovi e raddoppia il carico del server.

Quindi sono davvero confuso.

E un'altra domanda..

Guarda questa immagine di Rarst

Secondo quell'immagine wp-load.php viene caricato prima di tutti i plugin. Allora perché tutti gli autori di plugin includono di nuovo quel file?

0
Tutte le risposte alla domanda 2
3

Utilizza is_user_logged_in() e wp_get_current_user() (documentazione per sviluppatori).

if ( is_user_logged_in() ) {
    // L'utente corrente è loggato,
    // quindi otteniamo le informazioni dell'utente corrente
    $current_user = wp_get_current_user();
    // ID utente
    $user_id = $current_user->ID;
}
28 nov 2012 19:22:51
Commenti

Grazie. Quindi questo plugin è codificato nel modo sbagliato giusto? (riga 12 - 17)

PrivateUser PrivateUser
28 nov 2012 19:27:49

Questa è davvero una domanda separata. Senza approfondire quel Plugin, non posso davvero commentare sul perché stia caricando wp-load.php. So però che non è necessario per ottenere le informazioni dell'utente corrente.

Chip Bennett Chip Bennett
28 nov 2012 19:29:16

In realtà è necessario per quel proposito, dato che sta caricando la maggior parte del core di WordPress. La mia ipotesi è che questa sia una parte del plugin che viene chiamata al di fuori dell'ambito di WordPress - come una chiamata AJAX remota al file o qualsiasi cosa correlata, dove non hai accesso alle funzioni di WordPress come get_currentuserinfo. Tuttavia, non è davvero una buona pratica includere il core in questo modo.

Mario Peshev Mario Peshev
28 nov 2012 19:41:25
1

Se sei all'interno di un plugin, WordPress è già caricato. Non è necessario caricarlo manualmente.

All'interno di qualsiasi funzione che necessita dell'ID utente, devi fare due cose:

  1. Rendere globale la variabile dei dati utente
  2. Popolare la variabile dei dati utente

Ecco dello pseudocodice:

function some_function_that_needs_user_info() {
    global $current_user;
    get_currentuserinfo();

    // Ora puoi riferirti a $current_user->ID nel tuo codice.
}
28 nov 2012 19:20:35
Commenti

Nota: get_currentuserinfo() è deprecato a partire da WordPress 4.5.0. Usa invece wp_get_current_user(). ... maggiori informazioni qui.

nyedidikeke nyedidikeke
7 giu 2017 11:14:45