Je développe actuellement un plugin et j'essaye d'utiliser le global $ current_user.
class Something {
public function __construct() {
$this->get_user();
var_dump( $this->user );
}
private function get_user() {
require_once( ABSPATH . '/wp-includes/pluggable.php' );
$this->user = wp_get_current_user();
}
}
Cela fonctionne réellement. Cependant, je dois appeler le fichier pluggable.php qui ne devrait pas être nécessaire. J'ai également essayé d'appeler la variable globale $ current_user en vain: elle renvoie toujours NULL ... à moins bien sûr que j'importe à nouveau pluggable.php - comme ceci:
private function get_user() {
require_once( ABSPATH . '/wp-includes/pluggable.php' );
global $current_user;
get_currentuserinfo();
$this->user = $current_user;
}
Cela pourrait être un doublon potentiel de: $ current_user var renvoie NULL
Et j'ai essayé toutes les solutions, mais j'ai toujours besoin d'importer pluggable.php, quoi qu'il arrive.
On dirait que l'auteur de l'autre thread a trouvé une solution qui ne partage pas.
Quelqu'un d'autre a déjà ce problème? Merci.
Attendez l'action plugins_loaded
avant de créer l'instance de classe. Les fonctions enfichables sont chargées à ce moment. De wp-settings.php
:
/**
* Fires once activated plugins have loaded.
*
* Pluggable functions are also available at this point in the loading order.
*
* @since 1.5.0
*/
do_action( 'plugins_loaded' );
Je voudrais même attendre wp_loaded
dans la plupart des cas. Ensuite, l’objet global WP_Roles
a été configuré. Vous connaissez le thème et les paramètres régionaux. Il est fort probable que vous ne vous retrouverez pas dans un problème en raison du manque d’informations.
Ne créez jamais que des instances de classe lorsque le fichier principal de votre plugin est chargé. C'est toujours trop tôt. Habituellement, vous souhaitez vérifier d'abord la demande pour empêcher votre code de ralentir les autres plugins AJAX demandes ou le traitement des commentaires/XML RPC/feed de WP.
Le fichier principal de votre plugin pourrait ressembler à ceci:
add_action( 'wp_loaded', [ new Something, 'setup' ] );