Ottenere i dati dell'utente corrente da una pagina PHP esterna in WordPress
Ho una pagina PHP allo stesso livello del template/theme in WordPress. Ho bisogno di ottenere i dettagli dell'utente attualmente loggato da questa pagina.
Ho provato questo:
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
global $current_user;
$current_user = wp_get_current_user();
var_dump( $current_user );
Ma non restituisce nulla. 0
come user_id
e vuoto negli altri campi. Sto dimenticando qualcosa?
AGGIORNAMENTO:
Questo è il risultato del var_dump
:
object Object]1object(WP_User)#79 (10) {
["data"] => NULL
["ID"] => int(0)
["id"] => int(0)
["caps"] => array(0) {}
["cap_key"] => NULL
["roles"] => array(0) {}
["allcaps"] => array(0) {}
["first_name"] => string(0) ""
["last_name"] => string(0) ""
["filter"] => NULL
}

Puoi...
Caricare il file nel documento dove vuoi visualizzare il messaggio 'hey username':
<?php include(TEMPLATEPATH .'/check-user-hello.php'); ?>
.
Poi in quel file "check-user-hello.php"
Devi inserire questo codice
<?php
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo 'Ciao ' . $current_user->display_name;
} else {
echo '<a href="'. get_bloginfo('url') .'/wp-admin" class="loginlinktop">Accedi</a>';
}
?>
.
Spero che sia utile :)
Per saperne di più su questo argomento:
.
FIX 3
Per quanto ne so, devi includere wp-blog-header.php per eseguire le funzioni di WordPress al di fuori del loop.. quindi.. prova questo.
<?php
require('../../../wp-blog-header.php');
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo 'Ciao ' . $current_user->display_name;
} else {
echo '<a href="'. get_bloginfo('url') .'/wp-admin" class="loginlinktop">Accedi</a>';
}
?>
.
Nota importante:
Il percorso di "wp header blog" che ho creato in questo codice presuppone che il tuo file sia nella directory del template.. se non lo è, dovresti modificare il percorso del require per caricare correttamente il file.

OK, ho provato il codice e non ha funzionato. Non viene restituito nulla.

OK, deve mancare qualcosa? Ricevo questo errore: <b>Fatal error</b>: Call to undefined function is_user_logged_in() in <b>/home/mydomain/public_html/wp-content/themes/mytheme/uploadify.php</b> on line <b>25</b><br />

cos'è quella pagina uploadify.php? un template di pagina? puoi incollare il suo codice su pastebin e linkarlo qui?

<?php
//$targetFolder = '/uploads/'; // Relativo alla root if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; ////$targetFile = rtrim($targetPath,'/') . $_FILES['Filedata']['name']; $targetFile = $targetPath . $_FILES['Filedata']['name'];
$fileTypes = array('jpg','jpeg','gif','png'); // Estensioni file $fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$fileTypes)) { move_uploaded_file($tempFile,$targetFile); echo '1'; } else { echo 'Tipo di file non valido.'; } } ?>

Non è un template WordPress. È una pagina PHP autonoma. Ho solo bisogno di conoscere il nome di login dell'utente WordPress corrente così da poterlo aggiungere alla fine del percorso $targetFolder.

Penso che wp-load.php
sia sufficiente, non credo sia necessario l'header, che include anche template-loader.php
.

Continuavo ad incontrare un problema finché non ho realizzato di aver copiato del codice extra dallo snippet trovato durante una ricerca.
define( 'SHORTINIT', true );
Quando ho sostituito 'true' con 'false', ha funzionato perfettamente.
define( 'SHORTINIT', false );

Ciao ritardatari inciampatori (come me). Dato che ho avuto problemi con questo problema, e le risposte che indicano di richiedere wp-load.php o wp-blog-header.php dovrebbero funzionare, se mai hanno funzionato, non funzionano con le versioni più recenti, la soluzione sembra essere quella di caricare wp-load.php E POI invocare la funzione wp_head(). Quindi, senza ulteriori indugi,
require('../../../../../wp-load.php'); //Ovviamente la mia rozza costruzione del percorso del file wp-load.php.
wp_head();
$user = get_user_by('ID',57); //ottiene l'oggetto utente tramite ID. Cambia '57' con un ID valido nella tua installazione.
echo "<pre>";
print_r($user);
echo "</pre>";
...e il gioco è fatto.
Output:
WP_User Object
(
[data] => stdClass Object
(
[ID] => 57
[user_login] => unclebob
[user_pass] => $P$BkVVl8RhOc/niffq1QaNyaMeNwvpoO0
[user_nicename] => unclebob
[user_email] => uncle.bob@unclebob.online
[user_url] =>
[user_registered] => 2019-11-29 08:38:45
[user_activation_key] => 1575016726:$P$BE/a1mnbiD4unzrYG5O0L1T1pJZ5GG.
[user_status] => 0
[display_name] => Uncle Bob, PhD
)
[ID] => 57
[caps] => Array
(
[admin] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => admin
)
[allcaps] => Array
(
[0] => read
[admin] => 1
)
[filter] =>
[site_id:WP_User:private] => 1
)
