追加情報への補足ありがとうございます。
1 つの案として、私から提案させていただきます。
あまり知られていない WordPress の便利機能の 1 つとして、投稿フォーマットというものがあります。これは、WordPress のデフォルトテーマなら必ず対応しています。
投稿フォーマットは video にも対応しているので、これを利用するのがよいと思います。投稿フォーマットへの対応は凄く簡単です。after_setup_theme アクションにフックしている関数内で add_theme_support() 関数を使います。テーマファイルの作り方は通常の投稿や固定ページと全く一緒です。
WordPress のデフォルトテーマ Twenty Sixteen の functions.php の一部を以下に示します。
php
1if ( ! function_exists( 'twentysixteen_setup' ) ) :
23 * Sets up theme defaults and registers support for various WordPress features.
4 *
5 * Note that this function is hooked into the after_setup_theme hook, which
6 * runs before the init hook. The init hook is too late for some features, such
7 * as indicating support for post thumbnails.
8 *
9 * Create your own twentysixteen_setup() function to override in a child theme.
10 *
1112
13function twentysixteen_setup() {
14 /*
15 * Enable support for Post Formats.
16 *
17 * See: https://codex.wordpress.org/Post_Formats
18 */
19 add_theme_support( 'post-formats', array(
20 'aside',
21 'image',
22 'video',
23 'quote',
24 'link',
25 'gallery',
26 'status',
27 'audio',
28 'chat',
29 ) );
30}
31endif; // twentysixteen_setup
32add_action( 'after_setup_theme', 'twentysixteen_setup' );
次にテーマファイルの作り方ですが、テーマファイルのループ部分はだいたい content.php などとして、single.php から呼び出します。その時に、content-video.php などを作成し以下のようにして、ループ内で呼び出します。
php
1/*
2 * Include the post format-specific template for the content. If you want to
3 * use this in a child theme, then include a file called called content-___.php
4 * (where ___ is the post format) and that will be used instead.
5 */
6get_template_part( 'content', get_post_format() );
こうすることで、content-video.php が読み込まれるようになります。投稿フォーマットを指定していない場合は、content.php が呼び出されます。これを利用することで、比較的簡単に実装できると思います。
content-video.php の作り方としては、投稿本文に YouTube のビデオページの URL がある場合、それを 1 つ取り出し、do_shortcode( '[embed]http://www.youtube.com/watch?v=xxxxxxxxxxx[/embed]');
のようにして、ビデオを表示。YouTube のビデオページの URL がない場合は、アイキャッチを表示、それもない場合は、No image 画像を表示するなどの処理をすればよいかと思います。