1

ワードプレスのテーマにシンプルなラッパー ショートコードを作成しました。

and を使用ed.onBeforeSetContented.onPostProcessて前後に切り替えています

[wrap vars="whatever"]my cool content[/wrap]テキストビューのショートコード

<div class="wrap">my cool content</div>ビジュアル ビューのhtml

これは、このコードでうまく機能します。

_get_wrap : function(co) {
    return co.content.replace(/\<div(.*?)?\>(?:(.+?)?\<\/div\>)?/g, function(a,b,c) {               
        var arr = b.replace(/['"]/g,'').split(' ');
        var params = new Object();
        for (var i=0;i<arr.length;i++){
            var p = arr[i].split('=');
            params[p[0]] = p[1];
        }
        if ( params['class'] == "wrap" )
            return '[wrap'+b+']'+c+'[/wrap]';
        return a;
    });
}

残念ながら、開始ショートコードと終了ショートコードの間のコンテンツ内にreturnorがある場合、失敗しますnew line

c改行がある場合、上記のコードでコンテンツをそのまま維持するにはどうすればよいですか?

4

1 に答える 1

2

ワイルド.カードは改行と一致しません。改行を一致させるには、次を使用する必要があります: [^]:

_get_wrap : function(co) {
    return co.content.replace(/\<div([^]*?)?\>(?:([^]+?)?\<\/div\>)?/g, function(a,b,c) {               
        var arr = b.replace(/['"]/g,'').split(' ');
        var params = new Object();
        for (var i=0;i<arr.length;i++){
            var p = arr[i].split('=');
            params[p[0]] = p[1];
        }
        if ( params['class'] == "wrap" )
            return '[wrap'+b+']'+c+'[/wrap]';
        return a;
    });
}
于 2013-07-02T18:15:17.043 に答える