user2336702
user2336702

Reputation: 343

Wordpress: Outputting shortcode with Javascript?

<script language=”javascript”>
if (country_code==’US’)
{
document.write("[adrotate banner="1"]");
}
else
{
document.write("[adrotate banner="2"]");
}
</script>

[adrotate banner="x"] are wordpress shortcodes used for the Adrotate plugin

This script doesen't work because somehow outputting [adrotate banner="x"] is not possible? It uses the globally saved variable country_code.

I've tried with both " and ' (and the inner using one of them and the outer the other), but with no luck.

Any way to work around this and still use JS?

Upvotes: 1

Views: 10177

Answers (2)

Marco Brughi
Marco Brughi

Reputation: 11

Try to use ` backtick (Template literals) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals?retiredLocale=it

<script language=”javascript”>
var option1 = `[adrotate banner="1"]`;
var option2 = `[adrotate banner="2"]`;

if (country_code=='US') {
    document.write(option1);
} else {
    document.write(option2);
}
</script>

also work with php code (workaround for single and double quote) :

<script language=”javascript”>
var option1 = `<?php echo do_shortcode('[adrotate banner="1"]'); ?>`;
var option2 = `<?php echo do_shortcode('[adrotate banner="2"]'); ?>`;

if (country_code=='US') {
    document.write(option1);
} else {
    document.write(option2);
}
</script>

Upvotes: 1

doublesharp
doublesharp

Reputation: 27599

Shortcodes only work server side. If you want to work around it, you can submit the value using AJAX, call do_shortcode() on it in your PHP, return the results as JSON, and then write to the page.

http://codex.wordpress.org/Function_Reference/do_shortcode

As a side note, your example has a syntax error because you have double quotes inside your string, since it won't process as a shortcode. You either need to escape it or use single quotes.

Upvotes: 3

Related Questions