質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2256閲覧

【wordpress】投稿記事の埋め込み動画を記事一覧のアイキャッチに自動設定したい

ks_1234

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/23 00:35

前提・実現したいこと

wordpressで動画紹介サイトのテーマを自作中です。
投稿記事の本文冒頭にYoutubeの動画をiframeで埋め込んでいます。
各投稿記事から冒頭の動画のsrcを引っ張り出して記事一覧のアイキャッチとしてループさせたいです。

発生している問題・エラーメッセージ

記事一覧のループが解除されたり、うまく動画が出力されない。

該当のソースコード

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <article>

//タイトルなど

<?php $postdeta = esc_attr(get_the_content()); // 投稿記事からデータを取得 preg_match('https://www.youtube.[-_/A-Za-z0-9]*/', $postdeta, $youtubeUrl); // データからhttps://www.youtubeを含む英数字・ハイフン・アンダーバーを得る <?php echo "<a href='" .esc_url(get_permalink()). "' >"; echo "<iframe src='$youtubeUrl'></iframe></a>" ; ?>

//iframe srcとしてyoutubeurlを使用、リンク付きの動画アイキャッチを貼り付ける

//コメントなど

</article> <?php endwhile; endif; ?>
php, wordpress

試したこと

Youtubeのサムネイルをアイキャッチにすることはできました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

それを自動でしてくれるプラグインを使っては??「Automatic Featured Images from YouTube / Vimeo

コードで悩むよりも簡単かと思いますけど・・・コードでどうしてもやりくりしたいならこの回答は無用になりますね。

※テスト程度にしか確認していないですが、「先頭から1000文字の間に挿入された動画からアイキャッチ画像を抽出するようになっている」ようですから試してみてもいいかも知れませんよ。

公式ページはこちら(上のリンクは私が作っている日本語での紹介サイトの記事です)

https://wordpress.org/plugins/automatic-featured-images-from-videos/

投稿2019/02/23 07:27

momosiri

総合スコア1509

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ks_1234

2019/02/24 02:03

回答ありがとうございます! 勉強途中なもので、function.phpの記述がまだわからないので、プラグインがうまく使えないのです。
guest

0

ベストアンサー

詳しく検証してみてはいないのですが、
もしかするとYoutubeのアドレスを取り出す際の正規表現が違っているせいかもしれないのと、
そのせいで出力の際に不具合が出てるのかもしれません。
iframeのところも文法ミスがありました。
それらをふまえてざっくりこんな感じで表示はされると思うのですが、試してみてください。

php

1 2<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 3<article> 4<?php 5$postdeta = esc_attr(get_the_content()); 6// 投稿記事からデータを取得 7 8// YoutubeのVideoIDを抽出 9if (preg_match('%(?:youtube(?:-nocookie)?.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu.be/)([^"&?/ ]{11})%i', $postdeta, $match)) { 10 $video_id = $match[1]; 11 12// 出力 13echo "<a href='" .esc_url(get_permalink()). "' >"; 14echo '<iframe src="https://www.youtube.com/embed/' 15. $video_id 16. '" ></iframe>'; 17 18echo "</a>"; 19 20} 21?> 22</article> 23<?php endwhile; endif; ?> 24 25 26

iframeをaタグでリンクとして囲ってありますが、この場合だとiframeでYouTubeの動画を表示させるより、サムネイル画像をアイキャッチ画像に設定しておいて静止画として出力したほうが良い気もします。

投稿2019/02/23 06:34

fareastnoise

総合スコア250

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ks_1234

2019/02/24 02:00

ありがとうございます。 参考にして見直してみたらコードミス見つかりました! 無事取り出せました。 iframeの閉じタグが消えてました(笑)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問