Qual è il modo corretto per ottenere l'ID dell'utente loggato in un plugin?
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?

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;
}

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

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.

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.

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:
- Rendere globale la variabile dei dati utente
- 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.
}

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