web-dev-qa-db-fra.com

Erreur fatale après la mise à niveau 4.4 de la classe-wp-list-table

Je suis développeur d'un plugin privé Wp qui fonctionne depuis plus de 3 ans. Le plugin affiche sous forme de tableau les informations personnalisées des utilisateurs. Je viens juste de passer à la version 4.4 et maintenant je reçois une erreur fatale: Erreur fatale: appel de la méthode non définie stdClass :: render_screen_reader_content () dans .../wp-admin/includes/class-wp-list-table.php ligne 760

C'est à partir de $ myclassextention-> display ();

Si je regarde les versions précédentes, la fonction d'affichage public est complètement différente des versions précédentes.

Je ne sais pas quoi faire ... apparemment, je ne suis pas le seul ... https://wordpress.org/support/topic/fatal-error-in-admin-pages-after-upgrading- to-wordpress-44

Des pensées? Je pensais construire la table dans Bootstrap ... et j'ai besoin de résoudre ce problème dès que possible ... J'ai plus de 1100 utilisateurs qui l'utilisent. Les tickets de support commenceront bientôt à arriver.

BTW c'est sur un multi-site et la restauration n'est pas une option.

Merci d'avoir regardé.

PS ... Je ne peux pas poster de mots-clés WordPress car je n'ai pas assez de points Vraiment! C'est juste bizarre!

EDIT: Voici le format que j'utilise ... Je ne peux pas afficher le code exact.

J'ai essayé de poster le code et je me suis transformé en un gros bazar ... voici le modèle sur lequel je l'ai fondé https://wordpress.org/plugins/custom-list-table-example/ ... comme je l'ai dit Cela a fonctionné pendant 3 ans avec plus de 1100 utilisateurs.

5
user2823774

Cela a été résolu

J'ai dû ajouter 2 nouveaux fichiers ... on dirait que Wordpress a déplacé certaines méthodes vers de nouveaux emplacements.

Ce sont les fichiers qui ont fonctionné pour moi

// Include WP's list table class
if(!class_exists('WP_List_Table')){
    require_once( ABSPATH . 'wp-admin/includes/class-wp-screen.php' );//added
    require_once( ABSPATH . 'wp-admin/includes/screen.php' );//added
    require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
    require_once( ABSPATH . 'wp-admin/includes/template.php' );
}

Merci à tous ceux qui ont regardé.

5
user2823774

Belle solution que vous avez là. Mais vous devez définir une propriété $ screen dans la classe WP_List_Table (ou sa classe enfant) avant l'appel de la méthode de pagination.

Vous voulez faire de la propriété $ screen une instance de WP_Screen en utilisant cette fonction:

$this->screen = get_current_screen();

Voilà, votre table est prête à partir.

Merci

4
sunsane