Shortcode created to check language not works

i need to create a shortcode to display a different Div depending on WP current language only when users are logout.

The shortcode is this one:

function coupon_box() {

$user = is_user_logged_in() ;


if ($user == false) {

    if (get_locale() == 'en_Us') {
    echo ' <div class="discount"><h3 style="text-align: left;">Is this your first order?</h3><p style="text-align: left;">Request your discount code for a value of 20 euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/welcome-coupon/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Receive my code 
</a></span></p></div>';
}

    elseif (get_locale() == 'fr_Fr') {

    echo '<div class="discount"><h3 style="text-align: left;">C’est votre première commande?</h3><p style="text-align: left;">Demandez votre code de réduction d’une valeur de 20 Euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://atremoplus.fr/bienvenue/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Recevoir mon code</a></span></p></div>';
    }

    elseif (get_locale() == 'de_De') {
    echo '<div class="discount"><h3 style="text-align: left;">Ist dies Ihre erste Bestellung?</h3><p style="text-align: left;"> Fordern Sie Ihren persönlichen 20 Euros Rabatt.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/de/atremoplus-kaufen/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Gutscheincode anfordern</a></span></p></div>';
    }

    else {

    echo '<div class="discount"><h3 style="text-align: left;"> ¿Este es su primer pedido?</h3><p style="text-align: left;"> Solicite su código de descuento por un valor de 20 euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/es/comprar-atremoplus/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Recibir mi código</a></span></p></div>';
    }
}

}

add_shortcode('coupon', 'coupon_box');

Is there something you see that is wrong please?

Thank you!

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

In a shortcode you always need to return something. It’s also good practice to make your code very logical and readable. Here are a list of PHP Logical Operators: http://php.net/manual/en/language.operators.logical.php
Complete List of WordPress Locale Codes: https://wpastra.com/docs/complete-list-wordpress-locale-codes/

Below an example as English as a backup/fallback language:

function coupon_shortcode() {
    $logged_in = is_user_logged_in();

    if (get_locale() == 'fr_FR' && $logged_in == false) {
        return '<div class="discount"><h3 style="text-align: left;">C’est votre première commande?</h3><p style="text-align: left;">Demandez votre code de réduction d’une valeur de 20 Euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://atremoplus.fr/bienvenue/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Recevoir mon code</a></span></p></div>';
    }
    elseif (get_locale() == 'de_DE' && $logged_in == false) {
        return '<div class="discount"><h3 style="text-align: left;">Ist dies Ihre erste Bestellung?</h3><p style="text-align: left;"> Fordern Sie Ihren persönlichen 20 Euros Rabatt.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/de/atremoplus-kaufen/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Gutscheincode anfordern</a></span></p></div>';
    }
    elseif (get_locale() == 'es_ES' && $logged_in == false) {
        return '<div class="discount"><h3 style="text-align: left;">¿Este es su primer pedido?</h3><p style="text-align: left;"> Solicite su código de descuento por un valor de 20 euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/es/comprar-atremoplus/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Recibir mi código</a></span></p></div>';
    }
    elseif ($logged_in == false) { // Backup/fallback language is English and is shown only when user is not logged in
        return '<div class="discount"><h3 style="text-align: left;">Is this your first order?</h3><p style="text-align: left;">Request your discount code for a value of 20 euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/welcome-coupon/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Receive my code 
</a></span></p></div>';
    }
}
add_shortcode('coupon', 'coupon_shortcode');

Below an example as Spanish as a backup/fallback language:

function coupon_shortcode() {
    $logged_in = is_user_logged_in();

    if (get_locale() == 'en_US' && $logged_in == false) {
        return '<div class="discount"><h3 style="text-align: left;">Is this your first order?</h3><p style="text-align: left;">Request your discount code for a value of 20 euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/welcome-coupon/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Receive my code
    </a></span></p></div>';
    }
    elseif (get_locale() == 'fr_FR' && $logged_in == false) {
        return '<div class="discount"><h3 style="text-align: left;">C’est votre première commande?</h3><p style="text-align: left;">Demandez votre code de réduction d’une valeur de 20 Euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://atremoplus.fr/bienvenue/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Recevoir mon code</a></span></p></div>';
    }
    elseif (get_locale() == 'de_DE' && $logged_in == false) {
        return '<div class="discount"><h3 style="text-align: left;">Ist dies Ihre erste Bestellung?</h3><p style="text-align: left;"> Fordern Sie Ihren persönlichen 20 Euros Rabatt.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/de/atremoplus-kaufen/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Gutscheincode anfordern</a></span></p></div>';
    }
    elseif ($logged_in == false) { // Backup/fallback language is Spanish and is shown only when user is not logged in
        return '<div class="discount"><h3 style="text-align: left;">¿Este es su primer pedido?</h3><p style="text-align: left;"> Solicite su código de descuento por un valor de 20 euros.</p><p style="text-align: left;"><span style="text-decoration: underline;"><a class="myButton" href="https://www.atremoplus.net/es/comprar-atremoplus/" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener" rel="nofollow noreferrer noopener">Recibir mi código</a></span></p></div>';
    }
}
add_shortcode('coupon', 'coupon_shortcode');


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x