XPressME Integration Kit

フォーラム

Re: WPのギャラリーからの画像取得について

#3308
toemon
キーマスター

参考例で利用しているwp_get_attachment_image()は、the_post_thumbnail()内部でも使用している関数で、size指定には

  • キーワード(thumbnail, medium, large , full)
  • 配列(32,32)等のピクセル単位の幅と高さを表す配列

が使えます、

従って、

<code><?php get_image_by_menu_order(get_the_ID(), ギャラリーの画像順序番号,array(75,75)); ?></code>

のような利用も可能となります。

また、カスタムサイズを使いたいなら

<code>if ( function_exists( 'add_image_size' ) ) {<br />
add_image_size( 'category-thumb', 300, 9999 ); //幅300ピクセル、幅無制限に縮小(縦横比維持)<br />
add_image_size( 'homepage-thumb', 220, 180, true ); //(幅 220px,高さ180pxに切り抜き)<br />
}</code>

のようなコードをfunction.phpに追加して(この例では、’category-thumb’と、’homepage-thumb’という名前のサイズを追加しています。名前は任意です。)

<code><?php get_image_by_menu_order(get_the_ID(), ギャラリーの画像順序番号,'homepage-thumb'); ?></code>

みたいな使い方もできます。

さらに、get_image_by_menu_orderをプラグイン化したいなら

以下のコードを含むget_image_by_menu_order.phpを作成して(単にプラグインであることを示す一定フォーマットのコメント文を追加するだけです。)

<code><?php<br />
/*<br />
Plugin Name: Get Image By Menu Ordrer Number<br />
Plugin URI: http://exsample.com<br />
Description: Get Image by Post Garrary Order (custom function)<br />
Author: Foo<br />
Version: 1.0<br />
Author URI: http://exsample.com<br />
*/<br />
if ( function_exists( 'add_image_size' ) ) {<br />
add_image_size( 'width_256', 256, 9999 );<br />
add_image_size( 'width_128', 128, 9999 );<br />
add_image_size( 'width_64', 64, 9999 );<br />
add_image_size( 'height_256', 9999,256 );<br />
add_image_size( 'height_128', 9999,128 );<br />
add_image_size( 'height_64', 9999,64 );<br />
}<br />
function get_image_by_menu_order($postid,$menu_order=1,$size='full') {<br />
$args = array(<br />
'post_type'			=> 'attachment',<br />
'post_mime_type'	=> 'image',<br />
'post_status'		=> null,<br />
'post_parent'		=> $postid<br />
);<br />
$attachments = get_posts( $args );<br />
if ( $attachments ) {<br />
foreach ( $attachments as $attachment ) {<br />
if ($attachment->menu_order == $menu_order){<br />
echo wp_get_attachment_image( $attachment->ID, $size );<br />
}<br />
}<br />
}<br />
}</code>

作成されたファイルを、プラグインにアップして有効化しておけばどのテーマからも、

get_image_by_menu_order()を使えるようになります。

要するに、WordPressではテーマ内にあるfunction.phpはプラグインと同等の働きを行っているということです。

このように自分の欲しい機能をテーマ内に仕込んだり、プラグイン化したりを比較的簡単に実現できるところがWordPressの魅力でもあります。

テンプレートタグ

関数リファレンス

アクションフック

フィルターフック

なんかを眺めていると、結構楽しいです。

がんばってください。