Wordpressで投稿した動画を自動的に<div></div>で囲い、レスポンシブ化しようと思っています。
<div class="">[video]…[/video]</div>
このような状態にしたいと考えています。
試したこと
youtubeを埋め込んだ場合に、<iframe>を<div></div>で囲う方法があったので、
<iframe>を[video]に置き換えできないか試してみましたが、うまくいきませんでした。 ```ここに言語を入力 function iframe_in_div($the_content) { if ( is_singular() ) { $the_content = preg_replace('/<iframe/i', '<div class="youtube"><iframe', $the_content); $the_content = preg_replace('/</iframe>/i', '</iframe></div>', $the_content); } return $the_content; } add_filter('the_content','iframe_in_div'); ```こちらを下記のように書き換えました。
function video_in_div($the_content) { if ( is_singular() ) { $the_content = preg_replace('/[video/i', '<div class="video">[video', $the_content); $the_content = preg_replace('/[/video]/i', '[/video]</div>', $the_content); } return $the_content; } add_filter('the_content','video_in_div');
情けないですが、今の知識ではこれぐらいのことしかできませんでした。
そもそもこのやり方ではできないのでしょうか。
大抵のことは可能ですし、考えているというのは分かったのですけど、
何も調べたり試したりしてませんか?
あくまで質問サイトなので作業依頼を請け負うサイトではありません。
ご指摘、ありがとうございます。
こちらを利用するのが初めてだったこともあり、手探りで投稿してしまいました。質問事項を追記いたしましたので、再度閲覧いただけたら幸いです。
is_singular()
はtrueになっていますか?でないとどんなに中身を書いても通ることはないと思います。
あと[video]とかはWordPressの投稿タグかと思いますが、それがWordPressの機能で置き換えられるタイミングを把握しておかないと今回の対応は意味がなくなると思います。
※私自身はPHPはともかくWordPressには殆ど精通していません。現状で言えることのみここに書いています。
ご回答、ありがとうございます。上記の方法で試しましたら、サイトの表示が崩れてしまったので、記述が間違っていることは分かりました。is_singular()の部分含め、再度調べてみようと思います。
do_shortcodeのthe_contentフックでの優先度は11でデフォルトは10なので
優先度を指定しない限りはthe_content に追加したフィルタは
do_shortcodeより前に処理されるはずです
回答2件
あなたの回答
tips
プレビュー