【WorddPress】カスタム投稿の一覧を取得する方法

カスタム投稿一覧を取得する方法をご紹介します。WordPress関数「get_post_types」 と 「get_post_type_object」を用いてた良く使いそうなパターンをご紹介します。

  • カスタム投稿を用いたサイト構築を行っている方
  • WordPressプラグインの作成・開発をしている方

関数 get_post_types と get_post_type_object を使用

投稿タイプの一覧を取得するには関数 「get_post_types」 と 「get_post_type_object」 を使用します。

関数リファレンス/get post types – WordPress Codex 日本語版 

関数リファレンス/get post type object – WordPress Codex 日本語版 

投稿タイプの一覧取得・表示方法

下記に様々なパターンの投稿タイプの一覧の取得方法をご紹介いたします。

下記はそれぞれカスタム投稿「製品一覧(products)」「お知らせ(news)」「ブログ(blog)」が設定されているとします。

カスタム投稿タイプのみを表示する方法

3行目 '_builtin' => false とすることで既存の投稿タイプを除外し、カスタム投稿タイプのみを取得することができます。

ソース

$args = array(
'public'   => true, // 真偽値。true のとき、公開された(public な)投稿タイプのみが返されます。
'_builtin'   => false
);

$output = 'names'; // (文字列) (オプション) 戻り値の型を指定します。'names'(名前)または 'objects'(オブジェクト)。
$operator = 'and'; //(文字列) (オプション) $args で複数の条件を指定する場合の演算子('and' または 'or')。
$post_types = get_post_types( $args, $output, $operator ); 

foreach ( $post_types  as $post_type ) {
$object = get_post_type_object( $post_type );
	echo '<h5>'.$object->label.'</h5>';//カスタム投稿名の表示
	echo '<p>'.$object->name.'</p>';//スラッグの表示
}

表示

製品一覧

products

お知らせ

news

ブログ

blog

カスタム投稿タイプと既存の投稿タイプを表示する方法

ソース

$args = array(
'public'   => true // 真偽値。true のとき、公開された(public な)投稿タイプのみが返されます。
);

$output = 'names'; // (文字列) (オプション) 戻り値の型を指定します。'names'(名前)または 'objects'(オブジェクト)。
$operator = 'and'; //(文字列) (オプション) $args で複数の条件を指定する場合の演算子('and' または 'or')。
$post_types = get_post_types( $args, $output, $operator ); 

foreach ( $post_types  as $post_type ) {
$object = get_post_type_object( $post_type );
	echo '<h5>'.$object->label.'</h5>';//カスタム投稿名の表示
	echo '<p>'.$object->name.'</p>';//スラッグの表示
}

表示

投稿

post

固定ページ

page

メディア

attachment

製品一覧

products

お知らせ

news

ブログ

blog

カスタム投稿タイプと既存の「投稿」のみ表示する方法

WordPress既存の投稿タイプ「固定ページ(page)」「メディア(attachment)」「リビジョン(revision)」「ナビゲーションメニュー(nav_menu_item)」を除外します。

ソース

$args = array(
'public'   => true // 真偽値。true のとき、公開された(public な)投稿タイプのみが返されます。
);

$output = 'names'; // (文字列) (オプション) 戻り値の型を指定します。'names'(名前)または 'objects'(オブジェクト)。
$operator = 'and'; //(文字列) (オプション) $args で複数の条件を指定する場合の演算子('and' または 'or')。
$post_types = get_post_types( $args, $output, $operator ); 

foreach ( $post_types  as $post_type ) {
$object = get_post_type_object( $post_type );
	$object_name = $object->name;
	if( ($object_name != 'page') and ($object_name != 'attachment') and ($object_name != 'revision') and ($object_name != 'nav_menu_item')){
	echo '<h5>'.$object->label.'</h5>';
	echo '<p>'.$object_name.'</p>';
}
}

表示

投稿

post

製品一覧

products

お知らせ

news

ブログ

blog

以上です。プラグイン作成時に役立つかと思います。

記事がお役に立ちましたらシェアお願いします!