Erreur « Cette extension à générer x caractère d’envois inattendus » (Créer un compte)

  • WordPress :5.8
  • Statut : non résolu
  • Ce sujet contient 12 réponses, 3 participants et a été mis à jour pour la dernière fois par Skuhar, le il y a 8 mois.
13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Messages
  • #2398768
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : php: 7.3.21 / mysql: 5.7.31
    • Thème utilisé : thème Perso
    • Extensions en place : extension perso
    • Nom de l’hébergeur : localhost
    • Adresse du site : localhost

    Problème(s) rencontré(s) : Message d’erreur lors de l’activation d’un plugin créé.

     

    Bonjour,

    Je suis en train de travailler sur la création d’un plugin de type JobBoard. Pour cela je veux qu’à l’activation de mon plugin, des tables se créent dans ma base de donnée (tables correspondantes aux deux types de visiteurs qui pourraient s’inscrire sur le site, les employeurs et les candidats). J’ai donc utilisé les hooks register_activation_hook() et register_uninstall_hook() avec les codes correspondants à la création des différentes tables à l’activation du plugin et à la suppression de ces dernières lors de la désinstallation du plugin.

    MAIS

    Lorsque j’active mon plugin depuis le back-office, j’ai une erreur qui s’affiche me disant que « Cette extension a généré 2461 caractères de sortie inattendus lors de son activation. Si vous remarquez des messages « headers already sent », des problèmes avec vos flux de syndication ou d’autres soucis, essayez de désactiver ou de supprimer cette extension. » et rien ne se passe (mes tables ne sont pas créées dans ma bdd et l’option « Activated_Plugins » n’apparaît pas non plus dans la table wp-options de ma bdd…)

    J’ai bien l’impression que WP n’arrive pas à lire le contenu de mes fonctions mais je ne comprend pas pourquoi. Voici donc le code en question (écris dans le fichier de mon plugin intitulé wp-jobboard.php):

    <?php
    
    /**
     * Plugin Name: wp-JobBoard
     * Description: On s'en fout 
     * Version: 1.0
     * Author: Steph
     * @var wpdb $wpdb
     */
    
    
    
    
    
    if (!defined('ABSPATH')){
        wp_die('Accès interdit'); 
    }
    
    function create_databases(){
    
        add_option('Activated_Plugin', __FILE__);
    
        global $wpdb; 
    
        $table_name1 = $wpdb->prefix."wp_jb_employer";
        $table_name2 = $wpjb->prefix."wb_jb_candidate";
    
        $sql = "CREATE TABLE {$table_name1} (
            id mediumint(9) NOT NULL AUTO_INCREMENT, 
            time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
            email varchar(30) DEFAUT '' NOT NULL, 
            password char(60) DEFAUT '' NOT NULL, 
            company_name varchar(80) DEFAUT '' NOT NULL,
            activity_type varchar(80) DEFAUT '' NOT NULL, 
            postal_code tinyint(5) DEFAUT '' NOT NULL, 
            phone_number tinyint(15) DEFAUT '' NOT NULL, 
            siret_number tinyint(20) DEFAUT '' NOT NULL, 
            product_description varchar(500) DEFAUT '' NOT NULL, 
            company_logo varbinary(max) DEFAUT '' NOT NULL, 
            company_slogan varchar(50) DEFAUT '' NOT NULL,
            company_website varchar(50) DEFAUT '' NOT NULL,
            company_social_network1 varchar(50) DEFAUT '' NOT NULL, 
            company_social_network2 varchar(50) DEFAUT '' NOT NULL,
            company_social_network3 varchar(50) DEFAUT '' NOT NULL,
            company_images1 varbinary(max) DEFAUT '' NOT NULL,
            company_images2 varbinary(max) DEFAUT '' NOT NULL,
            company_images3 varbinary(max) DEFAUT '' NOT NULL,
            PRIMARY KEY (id)         
        )";
        require_once(ABSPATH.'wp-admin/includes/upgrade.php');
    
        $sql2 = "CREATE TABLE {$table_name2} (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            time datetime DEFAUT '0000-00-00 00:00:00' NOT NULL,
            email varchar(30) DEFAUT '' NOT NULL,
            password char(60) DEFAUT '' NOT NULL, 
            first_name varchar(30) DEFAUT '' NOT NULL,
            last_name varchar(30) DEFAUT '' NOT NULL,
            profile_picture varbinary(max) DEFAUT '' NOT NULL,
            postal_code tinyint(5) DEFAUT '' NOT NULL,
            adress varchar(100) DEFAUT '' NOT NULL,
            city varchar(30) DEFAUT '' NOT NULL,
            social_network1 varchar(50) DEFAUT '' NOT NULL,
            social_network2 varchar(50) DEFAUT '' NOT NULL,
            social_network3 varchar(50) DEFAUT '' NOT NULL,
            job_seaking varchar(30) DEFAUT '' NOT NULL,
            activity_type varchar(80) DEFAUT '' NOT NULL,
            graduation varchar(50) DEFAUT '' NOT NULL,
            resumes varbinary(max) DEFAUT '' NOT NULL,
            phone_number tinyint(15) DEFAUT '' NOT NULL,
            quality1 varchar(50) DEFAUT '' NOT NULL,
            quality2 varchar(50) DEFAUT '' NOT NULL, 
            quality3 varchar(50) DEFAUT '' NOT NULL,
            company_expectations varchar(500) DEFAUT '' NOT NULL, 
            job_passion varchar(500) DEFAUT '' NOT NULL, 
            best_skills varchar(50) DEFAUT '' NOT NULL,
            professional_goal varchar(500) DEFAUT '' NOT NULL, 
            hobby varchar(500) DEFAUT '' NOT NULL, 
            best_realisations_photo1 varbinary(max) DEFAUT '' NOT NULL,
            best_realisations_photo2 varbinary(max) DEFAUT '' NOT NULL,
            best_realisations_photo3 varbinary(max) DEFAUT '' NOT NULL,
            PRIMARY KEY (id)
            )";
            dbDelta([$sql1, $sql2]);
    };
    
    
    
    
    register_activation_hook(__FILE__, create_databases());
    
    
    register_deactivation_hook(__FILE__, function(){
        //TODO - Faire des choses à la désactivation du plugin
    });
    
    function delete_databases(){
    
    
        $table_name1 = $wpdb->prefix."wp_jb_employer";
        $table_name2 = $wpjb->prefix."wb_jb_candidate";
    
        $sql3 = "DROP TABLE {$table_name1}";
        $sql4 = "DROP TABLE {$table_name2}";
    
        dbDelta([$sql3, $sql4]);
    
    };
    
    register_uninstall_hook(__FILE__, delete_databases ());

    Est-ce que quelqu’un saurait m’aidé?

    Merci!

    #2398785
    mathieu42
    Participant
    Maître WordPress
    1719 contributions

    avant de parler de cette erreur d’activation, j’ai l’impression que vous partez sur des mauvaises bases avec la création de ces tables.

    sans avoir besoin de modifier la base de données, wordpress permet déjà de gérer différents types d’utilisateur avec les rôles et vous pouvez ajouter des rôles avec des permissions personnalisées :

    .https://developer.wordpress.org/plugins/users/roles-and-capabilities/

    ensuite pour ajouter des données aux utilisateurs comme par exemple l’adresse qui n’existe pas de base, il y a un système de métadonnées :

    .https://developer.wordpress.org/plugins/users/working-with-user-metadata/

    #2399183
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    Bonjour Mathieu,

    Merci pour votre réponse je me renseigne sur ces méthodes.

    La méthode de metadonnées prend elle en compte les photos?

     

    #2399188
    Lumiere de Lune
    Participant
    Maître WordPress
    20535 contributions

    Je ne comprends pas la question ? Les champs personnalisés peuvent contenir toutes sortes d’information, y compris l’ID d’un media wordpress ou l’url d’une photo externe.


    @mathieu42
    a parfaitement raison de vous orienter vers cette solution, il faut au maximum utiliser les structures et les fonctionnalités wordpress

    #2399193
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    Rebonjour,

    Suite à la réponse de Mathieu j’ai essayé de faire un code me permettant d’ajouter deux user rôles à l’activation de mon plugin que voici:

    <?php
    
    /**
     * Plugin Name: wp-JobBoard
     * Description: On s'en fout 
     * Version: 1.0
     * Author: Steph
     * @var wpdb $wpdb
     */
    
    
    
    
    
    if (!defined('ABSPATH')){
        wp_die('Accès interdit'); 
    }
    
    function add_employer_role(){
        add_role(
            'employeur',
            'Employeur',
            array(
                'delete_posts'=>true,
                'delete_published_posts'=>true,
                'edit_posts'=>true,
                'edit_published_posts'=>true,
                'publish_posts'=>true,
                'read'=>true,
                'upload_files'=>true
            ),
        );
    }
    
    function add_candidate_role(){
        add_role(
            'candidat',
            'Candidat',
            array(
                'delete_posts'=>true,
                'delete_published_posts'=>true,
                'edit_posts'=>true,
                'edit_published_posts'=>true,
                'publish_posts'=>true,
                'read'=>true,
                'upload_files'=>true
            ),
        );
    }
    
    
    register_activation_hook(__FILE__, add_employer_role());
    
    add_action('init', 'add_employer_role');
    
    
    
    
    register_activation_hook(__FILE__, add_candidate_role());
    
    add_action('init', 'add_candidate_role');
    
    function remove_employer_role(){
        remove_role('employeur');
    }
    
    
    function remove_candidate_role(){
        remove_role('candidat');
    }
    
    
    register_uninstall_hook(__FILE__, remove_employer_role());
    
    add_action('init', 'remove_employer_role');
    
    
    register_uninstall_hook(__FILE__, remove_candidate_role());
    
    add_action('init', 'remove_candidate_role')
    
    ?>

     

    malheureusement j’ai toujours la même erreur wordpress qui s’affiche à savoir : « Cette extension a généré 2457 caractères de sortie inattendus lors de son activation. Si vous remarquez des messages « headers already sent », des problèmes avec vos flux de syndication ou d’autres soucis, essayez de désactiver ou de supprimer cette extension. » et je ne comprend toujours pas pourquoi…

    Merci!

    #2399199
    mathieu42
    Participant
    Maître WordPress
    1719 contributions

    je pense que vous avez un souci d’affichage des erreurs php parce qu’en testant votre code, je les vois bien.

    regardez dans la configuration de php pour ces 2 directives :

    .https://www.php.net/manual/fr/errorfunc.configuration.php#ini.display-errors

    https://www.php.net/manual/fr/errorfunc.configuration.php#ini.error-reporting

    #2399207
    Lumiere de Lune
    Participant
    Maître WordPress
    20535 contributions

    Supprimez la balise fermante de php. Il suffit qu’il y ait des caractères après pour que ça génère des problèmes

    #2399243
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    Bonjour à tous,

    Tout d’abord merci pour vos réponses.

    Malheureusement après avoir supprimé la balise de fermeture de php et avoir mis toutes les options d’affichage d’erreur sur On dans mon fichier php.ini, la fameuse erreur apparaît toujours lors de l’activation de mon plugin et je n’ai toujours pas plus d’information sur cette erreur ni sur mon navigateur, ni dans ma console (alors que j’ai même activé le paramétrage qui affiche les erreurs dans la console en plus du navigateur…)

    C’est fou de ne trouver aucune documentation concernant cette erreur!

    Merci encore de votre aide.

    #2399244
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    Edit: J’ai trouvé sur le forum WP anglophone une erreur similaire, la seule réponse est du programmeur qui dit qu’il pense que c’est parce qu’il y avait des lignes blanches dans le code du plugin et que l’erreur est réparé depuis qu’il les a enlevé, évidemment, cela n’a pas fonctionné pour moi.

    #2399245
    mathieu42
    Participant
    Maître WordPress
    1719 contributions

    justement je parlais de la configuration de l’affichage des erreurs parce que c’est la seule chose qui peut vous aider à débuguer votre code.

    sur mon site de test / développement, je vois cela quand j’essaye d’activer votre extension :

    .

    essayez de faire un fichier avec juste le code « <?php echo $a; », vous devriez voir un message « <b>Notice</b>: Undefined variable: a in … ».

    #2399273
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    Très étrange ce problème d’affichage des erreurs… Y’a-t-il un paramètre wordpress à modifier en plus que le fichier php.ini pour que les erreurs s’affichent? Je rappelle que je travaille sur une version de wordpress en localhost, il n’y a donc presque rien d’installé dessus, peut-être que le problème vient de là?

     

    Merci.

    #2399274
    mathieu42
    Participant
    Maître WordPress
    1719 contributions

    quel est le résultat du fichier seul ?

    #2399278
    Skuhar
    Participant
    Initié WordPress
    8 contributions

    EDIT: J’ai réussi à afficher les erreurs php, il fallait activer le WP_DEBUG  dans le fichier wp-config.php. Maintenant, bon courage à moi pour les résoudre!!

     

     

13 sujets de 1 à 13 (sur un total de 13)
  • Vous devez être connecté pour répondre à ce sujet.