web-dev-qa-db-ja.com

Flickr oEmbedからTwenty Twelveテーマで返される画像サイズを大きくする方法

私は長い間優れた Flickr Gallery プラグインを使用していましたが、サイトをWP3.5とTwenty 12テーマにアップグレードしている間にoEmbedsに出会いました。そしてFlickrがネイティブにサポートされていることに注意してください。

私は簡単なテストを行い、そして確かにURLをFlickrの画像ページに配置するだけで投稿に画像が作成されます - しかしそれは幅320ピクセルという小さなものです。コンテンツスペースの幅が約625ピクセルのように見える場合は、500ピクセルの画像を返す方がはるかに良いでしょう。

WP3.5管理インターフェースには表示されていない、現在表示されている最大幅設定に関する言及を見つけました。私がネイティブ機能への切り替えを検討していた唯一の理由は、カスタマイズを削除することでした(私が持っているプラ​​グインは使いやすいです)。この幅を設定するためだけに子テーマを作成する必要がありますか?それとも私は何かが足りないのですか?

任意のヒントは大歓迎です。

3
zkarj

テーマとは関係ありません。

Flickr oEmbedは名前が _n.jpg で終わる画像ファイルを返しており、事実上320pxの幅を持ちます。大きいバージョンは _b.jpg で終わります

使用する必要があるフィルタフックは embed_oembed_html です。

以下は、返されるHTMLの結果を操作して画像サイズを大きくするためのものです。コメントを確認してください。

add_filter( 'embed_oembed_html', 'wpse_77745_flickr', 10, 4 );

function wpse_77745_flickr( $html, $url, $attr, $post_ID )
{
    // Check if oEmbedding from Flicker
    $provider = parse_url( $url ); 
    if( 'www.flickr.com' != $provider['Host'] )
        return $html;

    // Get the image attributes from $html
    // http://stackoverflow.com/q/138313/1287812
    preg_match_all( '/(alt|title|src)=("[^"]*")/i', $html, $img );

    // Change small for big
    $src = str_replace( '_n.jpg', '_b.jpg', $img[2][0] );

    // Build output
    // SRC and ALT vars already contain quotes
    $big_flick = "<a href='{$url}'><img src={$src} alt={$img[2][4]} width='{$attr["width"]}' height='{$attr["width"]}'></a>";

    return $big_flick;
}

参考のために、パラメーター値は次のとおりです。

$html => '<a href="http://www.flickr.com/photos/maheshguild/8299345724/"><img src="https://i.stack.imgur.com/f31ow.jpg" alt="Flamingos !!!" width="320" height="213" /></a>'
$url  => 'http://www.flickr.com/photos/maheshguild/8299345724/'
$attr => array(
    ['width'] => 625
    ['height'] => 938
    )
$post_ID => 143

FirePHP( ライブラリ および アドオン を使用すると、すべての操作を簡単に追跡できます。 - ))。

2
brasofilo

私が使っていたプラグインがWordpress 3.5で失敗したことを発見し、最小限の手間で回避策を評価しなければならなくなりました。これがうまくいったことです。

次のものをfunctions.phpに追加して、Twenty Elevenの私の既存の子供のテーマを変更しました(私はまだこのサイトを12に変更していません)

if ( ! isset( $content_width ) ) $content_width = 640;

これはFlickrが私の現在のテーマに合った640ピクセル幅の画像を返すようにしました。幅を639に設定すると、320ピクセル幅の画像が再び返されるので、正確な動作を理解するための作業はまだ多くあります。二十二十一の場合、デフォルトの幅は625ですので、私はまだ500ピクセル幅の画像が返される方法を把握する必要があります。

0
zkarj