web-dev-qa-db-ja.com

別のブログからのタイミング画像

私は先に で質問をしたことがありますが、他のWPサイトから投稿サムネイルを取得しています 。そこでは、素晴らしい Mike がSQLクエリをコーディングし、その結果がPHP配列に渡されます。その答えから私が修正したいコードはこれです。

$post_urls = $wpdb->get_col($sql);
  if (is_array($post_urls))
    echo implode("\n",$post_urls);

これで、配列は<img src="/link/to/image.jpg"/>の形式の値を保持します。今どうやって..

  1. 各画像URLでWP image_resize関数を呼び出しますか?
  2. 各画像に自分のCSSクラスを適用しますか?

アップデート:

SQLクエリを最適化するためのヒントを提供してくれた Jan に感謝します。これで$post_urls配列は画像へのプレーンなURLのみを保持します。配列内の各URLをループ処理して、それぞれに接頭辞(<img src="など)と接尾辞(" class="awesome-image"/>など)を追加する方法を教えてもらえますか。

1
GPX

image_resize()を呼び出すのは難しいでしょう、なぜならそれはあなたのメインブログのアップロードディレクトリで画像を探すからです。画像サイズが固定の場合は、フォトブログの設定に追加します。新しい画像をアップロードすると、そこに作成されます(その後、 古い画像のサムネイルを再構築できます ).

Mikeの答えでは、彼はSQLクエリに<img src=""/>の部分を追加しています。それはいいことです、しかしあなたはそれをする必要はありません。これを省略した場合は、画像のURLだけが表示され、あとでPHPですべてを追加できます。私は あなたと遊ぶためにもっと生の情報 をあなたに提供する代替バージョンを書きました。

$attachment_data_list = $wpdb->get_results( $sql );
if ( $attachment_data_list ) {
    foreach ( $attachment_data_list as $attachment_data ) {
        echo '<img src="/mysubblog/wp-content/uploads/';
        echo $attachment_data->upload_relative_path;
        echo '"/>';
    }
}
3
Jan Fabry

HTTPリンク画像にWP image_resiceの機能を使用するのが賢明かどうかは、私にはよくわかりません。私はおそらく必要性についてもっと知るために追加の質問を定式化するでしょう。おそらく以下のようなもの:

HTML IMGタグでリンクした画像の縮小版を表示するにはどうすればよいですか?

PHPの他の魔法に関しては、これはおそらくあなたが求めていることをしていることです。私はそれを見つけた本に従って魔法にするべきであるこの古代の魔法の公式を見つけました:

<?php
function doing_magic_on($my_very_specific_formatted_string, $my_own_css_class, $magic = 'bGlzdCgkc3RhcnQsICR1cmwsICRlbmQpID0gZXhwbG9kZSgnIicsICRteV92ZXJ5X3NwZWNpZmljX2Zvcm1hdHRlZF9zdHJpbmcpOw0KcmV0dXJuIHNwcmludGYoJyVzJXMiIGNsYXNzPSIlcyVzJywgJHN0YXJ0LCAkdXJsLCAkbXlfb3duX2Nzc19jbGFzcywgJGVuZCk7DQo=') {
    return eval(base64_decode($magic));
}

力があなたと一緒にいて、幸運が将来のあなたの魔法のスキルを向上させるように!

3
hakre

画像のサイズを変更したい場合は、Webサーバーから画像をダウンロードしてディスクに書き込む必要があります。以下の関数がうまくいくはずです。その後、画像はローカルハードドライブに保存されます。これは実際には他のサイトからサムネイルを読み込むよりはるかに友好的です。

function http_image_writer($imgSrc, $filepath) {

  if(isset($imgSrc)) {

    //getting the image dimensions
    list($width, $height) = getimagesize($imgSrc);

    //saving the image into memory
    //the file has to be a jpg file or it will fail.
    //Use the other imagecreate functions for other formats.
    $myImage = imagecreatefromjpeg($imgSrc);

    // Creating the thumbnail
    $file = imagecreatetruecolor($width, $height);
    imagecopyresampled($file, $myImage, 0,0,0,0, $width, $height, $width, $height);

    //final output of the image file
    imagejpeg($file,$filepath);

    //cleanup of the images in memory
    imagedestroy($file);
    imagedestroy($myImage);
  }
}

この関数はGdを使用しているので、単にサイズ変更コードを追加することができます。そのための例はたくさんあります。

2
Patriek