web-dev-qa-db-ja.com

<img>などのショートコードを入れるHTML

$atts = shortcode_atts( array(

        'path' => 'https://s.w.org/about/images/logos/wordpress-logo-simplified-rgb.png'

    ), $atts);

上記はショートコードの一部です。 Wordpressのテキストエディタでは、このショートコードは次のように生成されます。→

[theimg  path=""]

逆カンマはこの画像のURLを持っている必要があります→

[theimg path = "https://geordiebiker.files.wordpress.com/2011/10/audrey-marnay-longchamp-commando-drive-side.jpg"]

問題:

テキストエディタのビジュアルモードに入っていて、それらのカンマに画像のURLを入れると、URLではなく実際に画像が引き出されます。これを説明するために gifを実行しました

私はこのようなesc_urlなどのようなサニタイズが欠けていると思いますが、私は正確な修正を知りません。

更新:ショートコードにURLだけを入れると、エディタは<img src="">タグを追加しますか?

P.→2MBを超えているため、ここで画像をアップロードできません。

更新日:2018年1月11日

$output = '<div class="someclasss">';

        $output .= '<img class="someclass1" src="'.$atts['simg'].'" alt="' .$caption. '" >';

    $output .= '<i class="fa fa-expand" aria-hidden="true"></i>';

$output .= '</div>';

return $output;

上記の方法で、出力はブラウザに表示されます。

最後に、ブラウザでは、このように表示されます。

<img src="<img src="http://www.qygjxz.com/data/out/84/6074239-free-image.jpg" />">

この部分のsrc="'.$atts['path'].'"でそれを確実にすることができる方法はありますか?

.$atts['simg'].

uRLを取得してすべてを削除するだけですか?

4
The WP Novice

この動作は意図的なものであり、無効にすることができます。しかしそれは他の機能も壊すかもしれません。あなたが試すことができる、いくつかの回避策があります。

画像のURLとファイル名を壊す

次のようにして、引数をショートコードに渡すことができます。

[theimg 
    path="https://s.w.org/about/images/logos/" 
    filename="wordpress-logo-simplified-rgb.png"
]

これによりエディタはURLを解析できなくなりますが、値を取得してPHPコードにまとめることができます。

preg_match()を使う

それで、エディタはURLを完全なHTML画像に変換しますか?罰金、彼にやらせてください。エディタがフルイメージをショートコードに渡したら、PHPコードでpreg_matchを使用してURLを抽出できます。

preg_match( '@src="([^"]+)"@' , $img, $match );

これは$imgの内容を解析して<img>タグのsrcを返します。

1
Jack Johansson