【WordPress】特定の固定ページの子ページをget_posts()で取得する方法

Apricot Web Production

- WordPress

WordPressでサイト制作

WordPressでサイト制作する際、同じパーツを各所に出すので共通化しておきたい、ということはよくありますよね。
サービス一覧を各所に出したいこととか、よくあります。
今回は特定の固定ページの子階層の一覧を取得し、foreachで出力する方法をご紹介します。

1

サンプルコード

「/service/」ページ配下を取得する例です。

				
					<?php
$page_parent = get_page_by_path('service') -> ID; //親ページのIDを取得

$args = array(
	'posts_per_page' => 10, //表示する件数
	'post_parent' => $page_parent, //親のIDを指定
	'post_type' => 'page',
	'order' => 'ASC'
);
$page_child = get_posts($args);
?>
<ul>
<?php
foreach($page_child as $child):
$child_id = $child->ID; 
?>
	<li>
		<a href="&lt;?php echo get_the_permalink($child_id); ?" data-wpel-link="internal">">
			<p class="img"><img decoding="async" src="<?php echo get_the_post_thumbnail_url($child_id, 'full'); ?>" alt=""></p>';
			<h3 class="name ttl"><?php echo get_the_title($child_id); ?></h3>
		</a>
	</li>
<?php endforeach; ?>
</ul>
				
			

get_posts() をするときに、’post_parent’を指定することにより
子階層ページ一覧を取得しています。

2行目の「get_page_by_path」の引数は適宜変更し、親のディレクトリを指定するようにしてください。

2

アイキャッチ画像のURLを取得する関数

ちなみに、上記コードの19行目で使用している「get_the_post_thumbnail_url()」は投稿のアイキャッチ画像URLを取得する関数です。
引数に投稿IDを指定できるので、今回のような例で便利です。

第二引数にはサイズを指定します。
‘thumbnail’, ‘medium’, ‘large’, ‘full’ の中から指定できます。

まとめ

自由自在なWordPressですから、共通化できるところは共通化して、キレイなWordPressサイトを作っていきたいですね。
以上、エンジニアメモでした。

Follow me on social media

Let's connect