web-dev-qa-db-ja.com

Iframeを使用せずに埋め込むYouTubeのカスタムパラメータを使用する方法はありますか?

自分のワードプレスサイトに埋め込んだビデオのタイトルを表示したくありません。これを行っている方法は、埋め込みリンクを使用して、ワードプレスの投稿にiframeを挿入し、URLの末尾にカスタムパラメータ "showinfo = 0"を追加することです。私は自分のサイトのデザインを変更することにしたまで、これはうまくいきました。私は新しいデザインに合うようにするために私がそうしたすべてのビデオ(ほぼ200)を変更するためにいくつかのカスタムCSSを使用しなければなりませんでした。リンクをwordpressにドロップするだけの方法を知っていれば(ほとんどの人がそうであるように)、iframeを使用する必要はなく、wordpressはメディアセクションに入力された設定に基づいてビデオのサイズを調整したはずです。

私がやっていた方法よりもYoutubeビデオを埋め込むより良い方法があることを願っています。誰かがこれを行うには(それが可能であるならば)、何かアイデアを持っていますか?

私は毎日ビデオを投稿しているので、これを行う方法があればそれは本当に私のプロセスに役立ちます。ありがとう。

`

<?php
load_theme_textdomain('standardtheme', get_template_directory() . '/lang');
$locale = get_locale();
$locale_file = get_template_directory() . '/languages/$locale.php';
if(is_readable($locale_file)):
    require_once($locale_file);
endif;
add_theme_support('post-thumbnails');
require_once('admin/functions.php');
require_once('lib/standardtheme.php');
require_once('lib/pro-photo/pro-photo.php');

function Oembed_youtube_no_title($html,$url,$args){
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);
    if (isset($id['v'])) {
        return '<iframe width="'.$args['width'].'" height="'.$args['height'].'" src="http://www.youtube.com/embed/'.$id['v'].'?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
    }
    return $html;
}
add_filter('oembed_result','Oembed_youtube_no_title',10,3);

?>
1
Rick Smith

プラグインは必要ありません。Oembedクラスのoembed_resultフィルタフックを使用するだけです。

このような:

function Oembed_youtube_no_title($html,$url,$args){
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);
    if (isset($id['v'])) {
        return '<iframe width="'.$args['width'].'" height="'.$args['height'].'" src="http://www.youtube.com/embed/'.$id['v'].'?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
    }
    return $html;
}
add_filter('oembed_result','Oembed_youtube_no_title',10,3);

このコードをテーマのfunctions.phpファイルに貼り付け、settings >>メディアパネルで幅と高さを設定してください。投稿にYouTubeのビデオURLを貼り付けるだけで問題ありません。

5
Bainternet

すばらしい解決策Bainternet、

簡単に言うと、他の埋め込みタイプを壊さないように、これらの値を置き換える前に、埋め込みがYouTube埋め込みであることを最初に確認することをお勧めします。デフォルトで引数を解析するためにWordPressパターンを使うのも便利です。これら2つの追加に基づいて、これは修正された関数です( "namespace"はあなたの名前空間です:

/**
 * Add Custom Parameters to YouTube Embeds
 */
function namespace_oembed_youtube_no_title( $html, $url, $args ) {

    // Only run this for YouTube embeds
    if ( !strstr($url, 'youtube.com') )
        return $html;

    // Get embed URL
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);

    // Set default arguments
    $defaults = array(
        'width' => 480,
        'height' => 385,
        'showinfo' => true,
        'rel' => true
    );

    // Merge args with defaults
    $args = wp_parse_args( $args, $defaults );

    // Define variables
    extract( $args, EXTR_SKIP );

    // Add custom parameter values to IFRAME
    if ( isset($id['v']) ) {
        return '<iframe width="' . intval($width) . '" height="' . intval($height) . '" src="http://www.youtube.com/embed/' . $id['v'] . '?rel=' . intval($rel) . '&showinfo=' . intval($showinfo) . '" frameborder="0" allowfullscreen></iframe>';
    }

    return $html;
}
add_filter('oembed_result', 'namespace_oembed_youtube_no_title', 10, 3);

そして今wp_oembed_get()呼び出しのために:

// oEmbed Video
$video = wp_oembed_get('http://www.youtube.com/watch?v=mx4xeO3Xq7g', array(
    'width' => 632,
    'height' => 474,
    'showinfo' => false,
    'rel' => false
) );

このソリューションを追加してくれてありがとう、オリジナルの投稿は私にとって問題を解決して本当に役に立ちました。

2
Kevin Leary

URLを取得し、クエリ文字列を追加して、WordPressの組み込みoEmbedサポートに処理させるだけです。

つまり、iframeの埋め込みコードからURLを取り出し、最後に&showinfo=0を追加します。その結果を独自の行に投稿コンテンツに貼り付けると、voila:WordPressはタイトルを表示せずにビデオを正しく埋め込みます。

これが実用的な例です。 http://www.youtube.com/v/GrfGGzRNC4U?version=3&hl=ja_JP&showinfo=0

embedコード、notから短縮URLを取り出しました。

0
Chip Bennett