web-dev-qa-db-fra.com

plugin wordpress -> appel à la fonction non définie wp_get_current_user ()

J'essaie d'obtenir les informations de l'utilisateur actuel dans mon plug-in en utilisant func wp_get_current_user (). Mais je reçois Call to undefined function wp_get_current_user()

Apparemment, cela se produit parce que le fichier /wp-includes/pluggable qui contient la fonction n’est chargé qu’après le chargement des plugins.

Quelqu'un a des idées sur la façon d'obtenir les détails de l'utilisateur dans mon plugin?

24
Daithí

Apparemment, cela se produit parce que le fichier/wp-includes/pluggable qui contient la fonction n'est chargé qu'après le chargement des plugins.

En effet, ça l'est. Alors intégrez ce que vous faites dans une fonction et accrochez-le au plugin_loaded ou au crochet init. (voir le fichier wp-settings.php)

Exemple:

add_action('init','do_stuff');
function do_stuff(){
  $current_user = wp_get_current_user();
  // ...
}
34

Vous pouvez utiliser ceci,

<?php
if(!function_exists('wp_get_current_user')) {
    include(ABSPATH . "wp-includes/pluggable.php"); 
}
?>

cela devrait résoudre votre problème :)

16
user677607

Après l'installation de wp 3.8, j'ai eu le même problème avec une page que j'ai avec ajax. Je l'ai corrigé avec le code suivant:

if(!function_exists('wp_delete_user')) {
    include(ABSPATH . "wp-admin/includes/user.php.");
}

Apparemment, la fonction est déplacée de pluggable.php vers user.php. Je ne comprends toujours pas pourquoi cela ne fonctionne pas après avoir inclus le fichier wp-blog-header.php.

4
Benjamin Ziepert

essayez d'ajouter aussi

require_once('../../../wp-load.php');

de même que 

require_once(ABSPATH.'wp-includes/pluggable.php');
3
Mau

J'ai reçu le même message d'erreur après la mise à jour de WP. La solution qui a fonctionné pour moi est simple et rapide:

Recherchez capacités.php dans le répertoire wp-includes (WP 3.8.x). Ajoutez ce qui suit en haut, après la balise php d’ouverture:

require_once('pluggable.php');
0
colind

mon problème résolu avec ce code s'il vous plaît 

include_once(ABSPATH . 'wp-includes/pluggable.php');
0
Kapil Goyal

PAS wp-includes mais:

include_once(ABSPATH . "wp-admin/includes/plugin.php");
0
T.Todua

Aussi fou que cela puisse paraître, le problème de mon application venait de ce que je disposais d'un FICHIER appelé menu.php , où j'avais une classe pour créer des menus Wordpress.

Littéralement, changer simplement le nom du FICHIER de menu.php en nav-menu.php , corrige le problème. J'ai reproduit le problème 3 fois parce que je ne pouvais pas croire que le nom du fichier pouvait être le problème.

Juste au cas où quelqu'un voudrait savoir ce qu'il y avait dans ce fichier, le voici:

class OwNavMenu extends OwCpnt 
{
    function __construct( $location, $args ) {
        $show = $args['show'];
        $span = $args['span'];   

        if ( $show ) {
            $this->menu( $location, $span );
        }     
    }

    function menu( $location, $span ) {
        if ( $location ) {
            echo '<div id="ow-' . $location . '" class="ow-nav ow-' . $location . '">';
                wp_nav_menu(
                    array(
                        'theme_location'  => $location,
                        'link_before'     => ( $span ) ? '<span>'  : '',
                        'link_after'      => ( $span ) ? '</span>' : ''
                    )
                );
            echo '</div>';
        }        
    }
}
0
drjorgepolanco