简体   繁体   中英

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?

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.

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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM