Das aktuelle Ergebnis ist "Schwerwiegender PHP-Fehler: Aufruf der undefinierten Funktion wp_get_current_user ()", was sinnvoll ist, aber nicht hilft.
Ich muss $ current_user verwenden.
Hier ist der Code, den ich derzeit verwende:
$wp->init();
do_action( 'init' ); // Check site status
$file='http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php';
if ( is_multisite() ) {
if ( true !== ( $file = ms_site_check() ) ) {
require( $file );
die();
}
unset($file);
}
// Get the current user's info
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
echo $current_user->user_login;
function paf_uname(){
return $current_user->user_login;
}
$wp->init(); do_action( 'init' ); // Check site status $file='http://taddy.co.uk/wp-admin/wp_includes/pluggable.php'; if ( is_multisite() ) { if ( true !== ( $file = ms_site_check() ) ) { require( $file ); die(); } unset($file); } // Get the current user's info $current_user = wp_get_current_user(); if ( !($current_user instanceof WP_User) ) return; echo $current_user->user_login; function paf_uname(){ return $current_user->user_login; }
Antworten:
Um die Antwort von @ EAMann zu ergänzen, müssen Sie Ihren
wp_get_current_user()
Anruf (oder jeden Anruf, der versucht, auf eine darin definierte Funktion zuzugreifenpluggable.php
) innerhalb der'plugins_loaded'
Aktion einschließen .Wenn Sie dies in Ihre
functions.php
Datei einfügen, gehen Sie folgendermaßen vor:Beachten Sie, dass wir nicht daran interessiert sind, was diese Funktion zurückgibt . Wir sind daran interessiert, wann diese Funktion ausgeführt wird , nämlich nachdem die
pluggable.php
Datei Ihrewp_get_current_user()
Funktion geladen und definiert hat .Erwarten Sie also nichts mit dem Rückgabewert für diese Funktion. Betrachten Sie diese Funktion stattdessen als Ausgangspunkt für alles, was Sie tun möchten, sobald Sie die aktuellen Benutzerinformationen erhalten haben.
Mach es in einem Plugin
Der Vollständigkeit halber würden Sie im Kontext Ihres eigenen Plugins wie folgt auf eine ähnliche steckbare Funktion zugreifen:
(Legen Sie dies in eine .php-Datei in Ihrem
plugins
Ordner)Ich habe diese Technik erfolgreich für ein sehr einfaches Plugin vom Typ "Coming Soon" verwendet, das den Benutzer auf eine bestimmte Seite umleitet, wenn er nicht mit angemeldet ist
wp_safe_redirect()
.quelle
plugins_loaded
Aktion zum Ausführen verwenden,wp_safe_redirect()
wenn die Administrationsseite eines Plugins HTML ausgibt, bevor dasheader('Location: …')
ausgeführt werden kann? Ich habe ein Problem, bei dem eine Seite, die mithilfe von definiert wurde,add_menu_page(…)
den WP-Header (sowie Inhalt und Fußzeile) ausgibt, wenn das Plugin geladen wird, lange bevorplugins_loaded
es ausgeführt wird. Ich möchte Zugriff auf Funktionen im Inneren habenpluggable.php
(um auf Benutzerdaten zuzugreifen und Weiterleitungen durchzuführen), aber dies scheint unmöglich. Hast duadd_menu_page
mit verwendetplugins_loaded
?plugins are included
pluggable.php is included
'plugins_loaded' is triggered
'load-{page_hook}' is triggered
'page_hook' is triggered
Das Problem ist, dass Sie versuchen, den Code direkt und nicht mit einem WordPress-Hook zu laden. WordPress lädt eine Reihe von Code in einer bestimmten Reihenfolge (die Liste der Aktionen, die in einer typischen Anforderung ausgelöst wurden, finden Sie im Codex ).
Wenn Sie versuchen, Ihren Code direkt auszulösen, führen Sie ihn kurz vor dem
pluggable.php
Laden aus. Und Sie sollten nicht versuchen,include()
diese Datei direkt. Lassen Sie WordPress das für Sie tun.Definieren Sie stattdessen eine Funktion, die die Benutzerinformationen abruft:
Sie können diese Funktion dann ohne Probleme an einer beliebigen Stelle in Ihrem Thema verwenden. Beispielsweise:
Wenn Sie
$current_user
anderen Code verwenden müssen, stellen Sie sicher, dass Sie diesen Code mit einer WordPress-Aktion auslösen. Rufen Sie ihn nicht direkt auf, da er sonst ausgeführt wird, bevor die Funktion verfügbar ist.quelle
Es sieht so aus, als würden Sie Ihren Code laden, bevor bestimmte Funktionen verfügbar sind. Hast du es versucht:
quelle
Fügen Sie diese Funktion einfach zu Ihrer Plugin-PHP-Datei hinzu
Rufen Sie es dann an einer beliebigen Stelle auf, an der Sie den Benutzeranmeldestatus erhalten möchten. Beispielsweise:
quelle