説明不足がありました。
申し訳ありません。
埋め込みのソースを記述する際、投稿内容はいじらずに、その前後である単一記事のsingle.phpの内容に記述したいです。
こんにちは、
WordPressには、フィルタという機能があり、本来出力するはずのリンクを、横取りして、必要なものに変更する事が出来ます
お示しいただいたリンクのhtmlが正確なものであれば、以下のコードをfunctions.phpに貼り付けていただけると、実現できると思います。
貼り付け場所は、functions.phpの先頭にある<?php
の前に貼り付けます。
<?php
add_filter( 'the_content', 'my_insert_movie' );
function my_insert_movie( $contents ){
/*メール投稿動画の特有のパターンalt=mov iconを含むリンクを検索して*/
preg_match( '!<a href="([^"]+)"(.+)?alt=\'mov icon(.+)?</a>!',$contents, $regs );
/*ヒットしたら、リンクのURLをiframeにセットして*/
$iframe = '<iframe src="%1$s" class="my_movie"></iframe>';
$iframe = sprintf( $iframe, $regs[1] );
/*元のhtmlと、作成したiframe を置き換えて、値を返す*/
return str_replace( $regs[0], $iframe, $contents );
}
?>
functions.phpは、間違えた記述をしてしまうと、管理画面に入れなくなります。
テーマの編集は使わないで、FTP(S)等での変更がおすすめです
iframeのサイズやスクロールバーなど表示の調整は、my_movieというクラスを使って、style.cssで調整してください
回答いただきありがとうございます。
試してみましたが、実現できず…。URLが間違っているのかそれともfunction.phpの記述場所がおかしいのか…。
せっかく丁寧に教えていただいたのに申し訳ありません。
function.phpには一番最後に記述しました。
以下の、パターンが実際のhtmlと違うのかもしれません
'!<a href="([^"]+)"(.+)?alt=\'mov icon(.+)?</a>!'
一応、以下のパターンだと、動く事だけは確認したので、一度、投稿記事に以下のhtmlに動画のURLにして試してみてもらえますか?
<a href="動画URL(絶対パス)"><img src='動画画像(絶対パス)' alt='mov icon' />動画名</a><br />
返事の方大変遅くなり申し訳ありません。
やはりできないです…。
WordPressのバージョンは3.4.1なのですが、それが関係あるのでしょうか。
上記のパターンでも試してみましたが、やはりなんの動きもありません。
困りましたね
もし、差し支えないなら ブログのURL書いてもらったほうがいいかもしれないですね。
それちょっと、アレだけど、もう一回こっちで確認してほしいという事なら、メールで投稿した、投稿のソースを、そのまま、2-3個、貼り付けてみてください。
こちらで、もう一回、やってみます。
度々回答ありがとうございます。
ブログのURLですが、仕事上の都合上書くことは出来ません申し訳ありません。
自分で、色々試してみましたが、
できないのはfilter自体が効いていないせいでした。
とりあえず簡単な置き換えをしてみたのですがそれも反応せず…。
function.phpで何かの処理が邪魔しているのでしょうか。
しかし、filter処理の上に記述している他の処理は問題なく動いています。
試した置き換え処理↓
function addlink_the_content( $content ){
return str_replace( 'aiueo','<a href="#">aiueo</a>',$content );
}
add_filter(“the_content”, “addlink_the_content”, 10, 1 );
試してみてください
add_action( 'init', 'my_action');
function my_action(){
add_filter( 'the_content', 'my_insert_movie');
}
返事遅れました。
原因がハッキリしないのですが、単一記事の表示方法を変えた途端一番最初の処理で問題なく成功しました。
ありがとうございました。