Gengo : résoudre l’erreur Call to a member function wp_rewrite_rules() on a non-object in /wp-includes/classes.php

Gengo, plugin de wordpress pour le multilinguisme, entre en conflit avec certains plugins lors de leurs installation.

Le code d’erreur est de la forme :

Fatal error: Call to a member function wp_rewrite_rules() on a non-object in /wp-includes/classes.php on line ...

que se passe t il donc pour obtenir cette erreur ?

En simplifiant, cette erreur survient lorsqu’un plugin essaye de définir sa langue avant que Gengo soit chargé, et que la fonction du plugin enquestion “load_plugin_textdomain” doit être encapsulée dans une autre fonction appelée au init pour fonctionner.

Là vous êtes paumés et vous sortez un mouchoir, oui je sais. Mais en fin de compte ce n’est pas si compliqué que cela.

Par exemple pour le plugin Cforms qui entre en conflit avec Gengo, en allant /plugins/cforms/cforms.php, on a à la ligne 33 :
load_plugin_textdomain('cforms');

Et c’est cette ligne de code qui pose souci, il faut l’encapsuler dans une autre fonction et l’appeler au init pour que tout rentre dans l’ordre.

Donc
load_plugin_textdomain('cforms');
devient
function cforms_load_textdomain() {
load_plugin_textdomain('cforms');
}
add_action('init', 'cforms_load_textdomain');

Un autre exemple ? Cette fois-ci avec MailPress, plugin d’envoide newsletter pour wordpress, qui pose lui souci avec Gengo.
Là encore, en allant dans /plugins/mailpress/Mailpress.php, on a ligne 34 :

// for gettext
load_plugin_textdomain('MailPress', MP_PATH . 'mp-content/languages');

Sur le même principe, la solution afin que tout fonctionne correctement est :
function mailPress_load_textdomain() {
//load_plugin_textdomain('cforms');
load_plugin_textdomain('MailPress', MP_PATH . 'mp-content/languages');
}
add_action('init', 'mailPress_load_textdomain');

2 thoughts on “Gengo : résoudre l’erreur Call to a member function wp_rewrite_rules() on a non-object in /wp-includes/classes.php

  1. Comment t’es trop fort mike!!! :)

  2. lol pedro

Laisser un commentaire