wp_get_attachment_image_src
という関数の戻り値(配列)に横サイズと縦サイズが含まれています。それらの値を比較することで条件判定ができるのではないでしょうか。
関数リファレンス/wp get attachment image src – WordPress Codex 日本語版
mimosafa様
ありがとうございます。
このような感じでよろしいでしょうか?
<?php //カスタムフィールドの時の定義
$image = wp_get_attachment_image_src(get_post_meta($post->ID, 'image1', true), 'full');
//echo '<meta property="og:image" content="'.$image[0].'" />';
$img_w = $image[1];//画像の横サイズ取得
$img_h = $image[2];//画像の縦サイズ取得
?>
<?php if ( $img_w == $img_h ) : //画像が正方形の時の処理 ?>
正方形
<?php elseif ( $img_w > $img_h ) : //画像がランドスケープの時の処理 ?>
横長
<?php elseif ( $img_w < $img_h ) : //画像がポートレートの時の処理 ?>
縦長
<?php endif; ?>
- ループ内の記述である(
$post
にWP_Postオブジェクトが代入されている)
image1
というのがアタッチメントIDを値として持つ、カスタムフィールドのキーである
上記の条件内であればご提示のコードで大丈夫だと思います。
画像がない場合など、もう少し細かく条件分岐をすればより安全ですね。
<?php
/**
* Loop 内
*/
$attachment_shape = null;
$attachment_id = get_post_meta( $post->ID, 'image1', true );
if ( $attachment_id ) {
$image = wp_get_attachment_image_src( $attachment_id, 'full' );
if ( $image ) {
$img_w = $image[1];
$img_h = $image[2];
if ( $img_w == $img_h ) {
$attachment_shape = 'square';
} elseif ( $img_w > $img_h ) {
$attachment_shape = 'horizontal';
} else {
$attachment_shape = 'vertical';
}
}
}
switch ( $attachment_shape ) {
case 'square' :
echo '正方形';
break;
case 'horizontal' :
echo '横長';
break;
case 'vertical' :
echo '縦長';
break;
default :
echo 'そもそも画像なし';
}
みたいな感じで。
mimosafa様
ありがとうございました。
無事反映できました。
今まで「switch ( )」使ったことなかったので勉強になりました。