I added this to my WordPress page
if (script.readyState && script.onload!==null){
script.onreadystatechange= function () {
if (this.ready
Another option is to make a shortcode. In this example, the shortcode will only be printed if it contains the attributes x
and y
, e.g.: [myscript x="10" y="20"]
. I'm using a simple script that shows a JS alert dialog with the attributes values.
add_shortcode( 'myscript', 'sample_shortcode_so_6195635' );
function sample_shortcode_so_6195635( $atts, $content = null )
{
if( isset( $atts['x'] ) && isset( $atts['y'] ) )
{
$x = $atts['x'];
$y = $atts['y'];
// See: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
$html = <<<HTML
<button onclick="myalert()">Show Shortcode Atts</button>
<script type="text/javascript">
function myalert()
{
if( $x < 10 && $y < 20 )
alert( 'X less than 10 and Y less than 20' );
else
alert( 'other' );
}
</script>
HTML;
return $html;
}
}
You need to disable WP's autoformatting. WP will auto format even in the html editor, and the spaces and line breaks will break your javascript.
Use this plugin http://wordpress.org/extend/plugins/wp-no-format/
Update 4/08/2015: plugin is dated but still works for me.
This also works: add the plugin directly to functions.php and bracket the your javascript in <!-- noformat on -->
and <!-- noformat off -->
tags
Add to functions.php file:
function newautop($text)
{
$newtext = "";
$pos = 0;
$tags = array('<!-- noformat on -->', '<!-- noformat off -->');
$status = 0;
while (!(($newpos = strpos($text, $tags[$status], $pos)) === FALSE))
{
$sub = substr($text, $pos, $newpos-$pos);
if ($status)
$newtext .= $sub;
else
$newtext .= convert_chars(wptexturize(wpautop($sub))); //Apply both functions (faster)
$pos = $newpos+strlen($tags[$status]);
$status = $status?0:1;
}
$sub = substr($text, $pos, strlen($text)-$pos);
if ($status)
$newtext .= $sub;
else
$newtext .= convert_chars(wptexturize(wpautop($sub))); //Apply both functions (faster)
//To remove the tags
$newtext = str_replace($tags[0], "", $newtext);
$newtext = str_replace($tags[1], "", $newtext);
return $newtext;
}
function newtexturize($text)
{
return $text;
}
function new_convert_chars($text)
{
return $text;
}
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'newautop');
remove_filter('the_content', 'wptexturize');
add_filter('the_content', 'newtexturize');
remove_filter('the_content', 'convert_chars');
add_filter('the_content', 'new_convert_chars');