WPML -> Polylang (Créer un compte)

  • Statut : non résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #550793
    kroomart
    Membre
    Initié WordPress
    7 contributions

    Bonjour à tous

    Ma configuration WP actuelle
    – Version de WordPress 4.2.2 :
    – Version de PHP/MySQL 4.5.38:

    Je suis en train de migrer un site prestashop sur woocommerce. Le transfer de bdd s’est bien passé malgré la vieille version de PS 1.1. quelque chose

    Cependant j’ai installé polylang pour faire un site en deux langues. Le précédent était sur WMPL.

    Tout fonctionne à peu près bien sauf que j’ai un message d’erreur sur la home
    Fatal error: Call to undefined function wpml_get_language_information() in /home/serveur/www/dossier/wp-content/themes/maya/woocommerce/content-product.php on line 17

    C’est donc cette ligne qui pose problème
    $language_information = wpml_get_language_information($product->id);

    J’ai essayé de remplacer le wpml par pll mais rien n’y fait.

    Quelqu’un aurait une idée ?

    Merci d’avance
    k

    #1009007
    Chouby
    Participant
    Chevalier WordPress
    417 contributions

    Bonjour,

    La fonction wpml_get_language_information est une fonction de WPML qui n’est pa simplémentée dans Polylang (car non documentée). Néanmoins, j’ai trouvé le code sur le forum de WPML: https://wpml.org/forums/topic/canonical-urls-for-wpml-duplicated-posts/#post-52198

    Adapté à la va vite à Polylang, ça donne:

    if (!function_exists(‘wpml_get_language_information’)) {
    	function wpml_get_language_information($post_id = null) {
    		global $polylang;
    
    		if (empty($post_id))
    			$post_id = get_the_ID();
    
    		return empty($polylang) || false === $lang = $polylang->model->post->get_language($post_id) ? array() : array(
    			‘locale’ => $lang->locale,
    			‘text_direction’ => $lang->is_rtl,
    			‘display_name’ => $lang->name, // seems to be the post language name displayed in the current language, not a feature in Polylang
    			‘native_name’ => $lang->name,
    			‘different_language’ => $lang->slug != pll_current_language()
    		);
    	}
    }

    A placer dans un petit plugin perso

    #1009008
    Chouby
    Participant
    Chevalier WordPress
    417 contributions

    Oups.. Le code ci-dessus ne marchera pas avec Polylang 1.7.x.
    Voici la version corrigée:

    if (!function_exists(‘wpml_get_language_information’)) {
    	function wpml_get_language_information($post_id = null) {
    		global $polylang;
    
    		if (empty($post_id))
    			$post_id = get_the_ID();
    
    		return empty($polylang) || false === $lang = $polylang->model->get_post_language($post_id) ? array() : array(
    			‘locale’ => $lang->locale,
    			‘text_direction’ => $lang->is_rtl,
    			‘display_name’ => $lang->name, // seems to be the post language name displayed in the current language, not a feature in Polylang
    			‘native_name’ => $lang->name,
    			‘different_language’ => $lang->slug != pll_current_language()
    		);
    	}
    }

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