&& is breaking the page in WordPress

后端 未结 2 1697
星月不相逢
星月不相逢 2020-12-21 17:01

I added this to my WordPress page

if (script.readyState && script.onload!==null){
    script.onreadystatechange= function () {
        if (this.ready         


        
相关标签:
2条回答
  • 2020-12-21 17:41

    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;
        }
    }
    
    0 讨论(0)
  • 2020-12-21 17:44

    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');
    
    0 讨论(0)
提交回复
热议问题