Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe de WPML répond aux messages du forum 6 jours sur 7, 22 heures sur 24.

Aucun de nos assistants n'est disponible aujourd'hui sur le forum French. Veuillez créer un ticket, et nous nous le traiterons dès notre prochaine connexion. Merci de votre compréhension.

This topic contains 21 réponses, has 2 participants.

Last updated by Jamal il y a 2 mois.

Assigned support staff: Jamal.

Auteur Messages
janvier 24, 2020 à 11:51 #5356575

Jamal
Supporter

Languages: Anglais (English ) Français (Français )

Timezone: Africa/Casablanca (GMT+01:00)

Merci CGC,

Nous serons en attente de lire sa réponse. Pour l'instant je vais mettre le ticket en attente de retour client, le ticket devrait rester ouvert pour 3 semaines.

Cordialement,
Jamal

janvier 24, 2020 à 11:12 #5359495

GARCIA

Jamal,

Voici la réponse (en anglais) du développeur de PrivateContent Plugin à qui j'ai adressé votre réponse et suggestion :

<quote>

Hi Carlos,

I swear I read the WPML message 4 times but wasn't able to detect the problem.

Here's the code :

    // successful checkout
    if(is_order_received_page() && isset($_REQUEST['key'])) {
        $order_id = wc_get_order_id_by_order_key($_REQUEST['key']);
        
        if($pcpp_subscr->is_pvtcontent_order( $order_id)) {
            
            // change status to complete if it's status is processing
            $order = $pcpp_subscr->get_order($order_id);
            if($order->get_status() == 'processing') {
                $order->update_status('completed', __('Subscrption paid', 'pcpp_ml').' -', true);
            }
            
            
            // eventually perform custom redirect
            $redir = get_option('pcpp_order_ok_page', false);
            if(!empty($redir)) {
                $redir = pc_wpml_translated_pag_id($redir);
                header('Location: '. add_query_arg('pcpp_action', 'order_ok', get_permalink((int)$redir)) );    
            } 
            else {
                add_action('wp_head', 'pcpp_wc_hide_order_again_btn', 999);    
            }
        }
    }

The redirect is ruled by:

    $redir = pc_wpml_translated_pag_id($redir);
    header('Location: '. add_query_arg('pcpp_action', 'order_ok', get_permalink((int)$redir)) ); 

Basically I know the target page ID and get the translation ID through WPML.
Then query its permalink.

What am I missing..?

</quote>

Pouvez-vous répondre à son questionnement (par mon intermédiaire) car visiblement il ne comprend bien le problème ?

Merci

CGC

janvier 25, 2020 à 9:36 #5361111

Jamal
Supporter

Languages: Anglais (English ) Français (Français )

Timezone: Africa/Casablanca (GMT+01:00)

Bonjour,

D'après ce que j'ai pu comprendre, le code responsable de la redirection ne s'execute pas, par ce qui il est à l'interieur d'un (IF) qui est toujours faux(false) et donc n'execute pas ce code. J'ai fait une capture pour m'exprimer en anglais.

Entretemps, je vais aussi escalader ce retour à notre équipe de compatibilité.

Cordialement,
Jamal

janvier 25, 2020 à 9:50 #5361149

GARCIA

Merci Jamal
Je viens d'envoyer au développeur votre réponse, plus claire en effet, et vous tiens au courant de son retour ASAP
: )
CGC

janvier 25, 2020 à 10:11 #5361187

Jamal
Supporter

Languages: Anglais (English ) Français (Français )

Timezone: Africa/Casablanca (GMT+01:00)

Merci CGC, je serais en attente de votre retour. Ma semaine commence le mardi, je vous tiendrais au courant si jamais j'ai eu un retour de l'équipe de comptaibilité.

janvier 25, 2020 à 6:40 #5362481

GARCIA

Jamal,

Voici sa réponse:

Mh... this doesn't make sense.
Hope you're able to follow a bit the code snippet, but everything is executed in the "template_redirect" WP action.

In there you can execute a redirect or just skip and do nothing.
Obviously I perform the redirect only in specific circumstances.

What matters is the performed redirect

    $redir = pc_wpml_translated_pag_id($redir);
    header('Location: '. add_query_arg('pcpp_action', 'order_ok', get_permalink((int)$redir)) ); 

they must understand why this returns a bad URL.

To be as complete as possible I paste the pc_wpml_translated_pag_id() code

    function pc_wpml_translated_pag_id($obj_id){
        
        // WPML
        if(function_exists('icl_object_id')) {
            $trans_val = icl_object_id($obj_id, 'page', true);
            if($trans_val && get_post_status($trans_val) == 'publish') {
                return $trans_val;
            }
        }     
        
        return $obj_id;
    }
janvier 28, 2020 à 8:38 #5375207

Jamal
Supporter

Languages: Anglais (English ) Français (Français )

Timezone: Africa/Casablanca (GMT+01:00)

Bonjour CGC,

J'ai aussi eu un retour de notre équipe de compatibilité. L'auteur de l'extension doit souscrire à notre programme GoGlobal si il a besoin de notre aide pour corriger ce problème.

Comme j'ai expliqué sur la capture attachée, le code de redirection n'est jamais éxecuté dans ce scenario.

Voici le retour de l'équipe de compatibilité:

yes, the code inside the "if" clause does not run in the secondary language. Your screenshot is pretty clear.

I think this happens because at that point, the language is the default language (so the redirection to the right language won't happen either).

Ce bug se présente sur le code de l'extension, je pense que c'est les auteurs de l'extension qui devront comprendre pour quoi le code retourne le mauvais URL. Si ils n'y arrivent pas, nous pourrons et aimerons les aider dans le cadre de notre programme GoGlobal.
https://wpml.org/documentation/theme-compatibility/go-global-program/

Finalement, je vous prie, CGC, d'accepter nos éxcuses si cela vous engendres des inconvéniences.

Cordialement,
Jamal