どもです。
WordPressのカスタムメニューを使う際、
まずはfunctions.phpに、
register_nav_menu('メニュー名(スラッグ)', '管理画面上のメニューの表示名');
を入力した上、メニューを表示したい場所に、
<?php
wp_nav_menu( array(
'theme_location'=>'global_nav',
'container' =>'',
'menu_class' =>'',
'depth' =>'1',
'items_wrap' =>'%3$s'));
?>
wp_nav_menu( array(
'theme_location'=>'global_nav',
'container' =>'',
'menu_class' =>'',
'depth' =>'1',
'items_wrap' =>'%3$s'));
?>
といった感じで入力すれば勝手にメニューが出てきてくれるわけですが(wp_nav_menuの書き方は他のサイト様を見て頂くとして)。
メニューに固定ページを登録したとき、そのページのアイキャッチ画像を表示させたかったのです。
が、wp_nav_menuではアイキャッチの表示はできないようです。
これについて、有限会社Willさんいん様のスタッフブログに良い感じの答えがありました。
が、wp_get_nav_menu_itemsで何故かメニューのコンテンツが取得できない!
どうやら引数がスラッグだとダメで、IDだと取得できるっぽい。
関数のヘルプを見た限りではスラッグで大丈夫そうなのですが…。
とにかく、メニューのIDをスラッグから取得すれば良いということですね!
というわけでポン(・∀・)↓
<?php
$menu_name = 'メニュー名(スラッグ)';
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menu_items = wp_get_nav_menu_items($menu->term_id);
if($menu_items):
?>
<ul>
<?php
foreach ($menu_items as $menu):
$page_id = $menu->object_id;
$thumbnail_id = get_post_thumbnail_id($page_id);
$image_attributes = wp_get_attachment_image_src($thumbnail_id);
$content = get_page($page_id);
?>
<li>
<div class="title"><?php echo $content->post_title; ?></div>
<img src="<?php echo $image_attributes[0]; ?>" alt="" width="<?php echo $image_attributes[1]; ?>" height="<?php echo $image_attributes[2]; ?>" />
<a href="<?php echo get_permalink($page_id); ?>">詳しくはこちら</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
ちな、このコードはフロントページに使いました。