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

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

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

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

PHP

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

Q&A

解決済

1回答

2618閲覧

カスタムフィールドの出力で自動埋め込み

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/07/29 20:12

編集2018/07/29 23:39

###目的
ワードプレスの本文にyoutubeのURLを貼ると、動画がそこで再生できるように埋め込まれて出力されますが、この機能をカスタムフィールドの出力でも使う事ってできませんか?

次のようにカスタムフィールド「doga」の文字列を出力するときに、文字列の出力でなくて、埋め込まれた動画として出力させたいのです。

php

1$doga = xprofile_get_field_data('doga' ,bp_get_member_user_id()); 2echo $doga;

###試したこと
本文と同じ形式で出力させたらどうかと思い「wpautop」をフィルターさせてみたり、または「wp_get_video_extensions」とやらも使ってみましたが変わりなくURLが文字列で出力されてしまいます。

php

1$doga = xprofile_get_field_data('doga' ,bp_get_member_user_id()); 2echo wpautop($doga); 3 4$doga = xprofile_get_field_data('doga' ,bp_get_member_user_id()); 5echo wp_get_video_extensions($doga);

※尚、youtube以外にも普段ワードプレスが自動埋め込みするすべてのURLに対応させたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下でいかがでしょうか。

考え方

・WPの自動出力にこだわらないのであれば、文字列取得はできているということなので、Youtubeの動画URLと埋め込みURLの差分を置き換えて出力する
・動画のURL : https://www.youtube.com/watch?v=○○○○○
・埋め込み用のURL : https://www.youtube.com/https://www.youtube.com/embed/○○○○○
→違いは、watch?v=とembded/なので、この部分を置き換えて出力する
→文字列の置き換えはstr_replaceを利用

コード

<?php $doga = xprofile_get_field_data('doga' ,bp_get_member_user_id());//動画URL取得 $doga = str_replace("watch?v=", "embed/", $doga);//URLを埋め込みように置き換え ?> <iframe width="幅のサイズ" height="高さのサイズ" src="<?php echo $doga; ?>" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>//埋め込み用のHTML、srcを$dogaで出力

投稿2018/07/29 22:54

sandygift

総合スコア73

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

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

退会済みユーザー

退会済みユーザー

2018/07/29 23:37

一案ですね。ありがとうございます。ただ、実は今回は「WPの自動出力にこだわりたい」という目的です。つまりyoutubeに限らずWPで普段自動埋め込みされる各メディアの全てに対応させたいのです。
sandygift

2018/07/30 00:30

[embed width="200" height="150]ここにURL[/embed] こちらで、自動埋め込みの機能を利用可能なようです。※oEmbed 文字列置き換えも不要ですね。
退会済みユーザー

退会済みユーザー

2018/07/30 00:32

そんなにアッサリしたコードがあったのですか!!笑 試してみます。どうもありがとうございます。
退会済みユーザー

退会済みユーザー

2018/07/30 00:45 編集

不思議なんですが、 <?php echo do_shortcode('[embed width="200" height="150]'); $doga = xprofile_get_field_data('doga' ,bp_get_member_user_id()); echo $doga; echo do_shortcode('[/embed]'); ?> とテンプレートファイルに書いても、 https://www.youtube.com/watch?v=nCL635U6NT0[/embed] のように、閉じタグのショートコードが反映されずにそのまま文字列で出力されてしまいました???
sandygift

2018/07/30 03:20

失礼しました、テンプレートファイル内ではこのショートコードは使えないようです。 検証はしておりませんが、こういう記述でいけるかと。 <?php global $wp_embed; $post_embed = $wp_embed->run_shortcode($doga); echo $post_embed; ?>
退会済みユーザー

退会済みユーザー

2018/07/30 05:15

URLの文字列だけechoされましたね。なかなか難しいものです。引き続き考えてみます。ありがとうございます。
sandygift

2018/07/30 20:53

こちらでいけますね。 <?php global $wp_embed; $doga = xprofile_get_field_data('doga' ,bp_get_member_user_id()); echo $wp_embed->run_shortcode( '[embed]' . $doga . '[/embed]' ); ?>
退会済みユーザー

退会済みユーザー

2018/07/30 20:59

88888!!どうもありがとうございます。これは私では絶対に思いつけませんでした。感謝です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問