web-dev-qa-db-ja.com

Wordpressは私のJavascriptに<p>を追加する

revoslider というスライダーを使い、ショートコードで使います。

ショートコード を使用し、挿入 および保存にビジュアルエディタを使用しない場合、WordPressが<p>をjavascriptに次のように追加するため、スライダーは機能しません。

<p>         <script type="text/javascript"></p>
<p>             var tpj=jQuery;</p>
<p>                                 tpj.noConflict();</p>
<p>             var revapi1;</p>
<p>             tpj(document).ready(function() {</p>
<p>             if (tpj.fn.cssOriginal != undefined)
                    tpj.fn.css = tpj.fn.cssOriginal;</p>
<p>             if(tpj('#rev_slider_1_1').revolution == undefined)
                    revslider_showDoubleJqueryError('#rev_slider_1_1');
                else
                   revapi1 = tpj('#rev_slider_1_1').show().revolution(
                    {
                        delay:9000,
                        startwidth:960,
                        startheight:350,
                        hideThumbs:200,</p>
<p>                     thumbWidth:100,
                        thumbHeight:50,
                        thumbAmount:2,</p>
<p>                     navigationType:"bullet",
                        navigationArrows:"solo",
                        navigationStyle:"round",</p>
<p>                     touchenabled:"on",
                        onHoverStop:"on",</p>
<p>                     navigationHAlign:"center",
                        navigationVAlign:"bottom",
                        navigationHOffset:0,
                        navigationVOffset:20,</p>
<p>                     soloArrowLeftHalign:"left",
                        soloArrowLeftValign:"center",
                        soloArrowLeftHOffset:20,
                        soloArrowLeftVOffset:0,</p>
<p>                     soloArrowRightHalign:"right",
                        soloArrowRightValign:"center",
                        soloArrowRightHOffset:20,
                        soloArrowRightVOffset:0,</p>
<p>                     shadow:2,
                        fullWidth:"off",</p>
<p>                     stopLoop:"off",
                        stopAfterLoops:-1,
                        stopAtSlide:-1,</p>
<p>                     shuffle:"off",</p>
<p>                     hideSliderAtLimit:0,
                        hideCaptionAtLimit:0,
                        hideAllCaptionAtLilmit:0,
                        startWithSlide:0    
                    });</p>
<p>             }); //ready</p>
<p>         </script></p>

このため、コードは機能せず、WordPressが各行にこれらの<p>を追加する理由を理解していません - それはばかげています。

私はコンテンツのためにadd_filterを試しましたが、それはまたうまくいきません。

5
Fran

どちらかする必要があります

1)WordPressが<p>タグを追加しないようにスクリプトからすべての空白を取り除いてください。そうすればJSは動作します

2)すべての投稿/ページに対して投稿エディタでautopを無効にします( http://codex.wordpress.org/Function_Reference/wpautop を参照)ので、WPは段落区切りを追加しません

3)次のようにして、autopをグローバルに有効にしたままにします。ただし、個々の投稿やページでとタグで無効にすることができます。

以下の関数をfunctions.phpに追加し、2つのタグを使用します

<!-- noformat on --><!-- noformat off -->

あなたのページ/投稿エディタ、すなわち

    text will be rendered *with* autop

    <!-- noformat on -->

    text will be rendered *without* autop

    <!-- noformat off -->

    text will be rendered *with* autop

前述のように、2つのフォーマットタグ以外のコンテンツでは自動処理が有効になります。

テーマのfunctions.phpに追加してください:

// <!-- noformat on --> and <!-- noformat off --> functions

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');
7
markratledge