Un utilisateur a demandé 👇

Salut,

Avec Polylang 2.2.3, tout fonctionne très bien. Mais lorsque j’ai mis à jour le plugin vers la version actuelle (2.2.5), j’ai trouvé une page blanche.

L’écran creux :

[Thu Nov 09 15:03:52.835790 2017] [:error] [pid 5879] [client 86.xxx.69.xxx:48636
] PHP Fatal error:  Call to a member function get_current_language() on null in
/home/xxx/dev/wp-content/plugins/yith-woocommerce-request-a-quote-premium/
includes/class.yith-request-quote.php on line 797, referer: http://xxx.fr/wp-admin/plugins.php

Et la ligne 797 du plugin Yith :

if ( function_exists( 'wpml_object_id_filter' ) ) {
  global $sitepress;
  $option_value = wpml_object_id_filter( $option_value, 'post', true, $sitepress->get_current_language() );
}

Voyez-vous que $sitepress n’est plus pris en charge ?


(@choubi)

il y a 3 ans

Salut,

Polylang n’est jamais pris en charge $sitepress et je ne le soutiendrai jamais. $sitepress la cible globale est WPML.

La raison pour laquelle votre plugin se casse maintenant et pas dans 2.2.3 est parce que j’ai ajouté la prise en charge des fonctionnalités wpml_object_id_filter en version 2.2.4 (pour comparer la compatibilité avec le plugin Yith WooCommerce :/). Elle n’existait pas auparavant, puisqu’il s’agit d’une fonction d’amortissement. Mais il existe encore de nombreux plugins qui utilisent les fonctionnalités de dépréciation de WPML, donc quand j’en trouve un, je l’ajoute.

Ce qui est fait dans votre plugin est faux. Teste correctement l’existence de la fonction wpml_object_id_filter mais pas pour l’objet $sitepress.

Le meilleur arrangement serait que les auteurs de plugins arrêtent les fonctions internes ou d’obsolescence de WPML et utilisent l’API WPML actuelle. Dans ce cas


$option_value = apply_filters( 'wpml_object_id', $option_value, 'post', true );

le code correct pour WPML et fonctionne également pour Polylang. La langue actuelle ne peut pas être utilisée comme quatrième paramètre car il s’agit de la valeur par défaut. Cependant, si nécessaire, voici le bon code :


$current_language = apply_filters( 'wpml_current_language', '' );

Voir aussi : https://polylang.pro/fatal-error-call-to-a-member-function-on-a-non-object-in/

Cette réponse a été modifiée il y a 3 ans par. Cette réponse a été modifiée il y a 3 ans par.


(@gdebrion)

il y a 3 ans

Merci pour la réponse rapide 🙂

Je vais entrer en contact avec Yith et j’espère avoir bientôt une solution de son côté !

Cela a-t-il résolu votre problème ?

Was this helpful?

0 / 0

Leave a Reply 0

Your email address will not be published. Required fields are marked *