こんにちは、Ryohei(@ityryohei)です!

本記事では、WordPressのget_metadata関数で投稿や固定ページのすべてのメタデータを取得する方法をご紹介しています。

WordPressで指定した投稿や固定ページのすべてのメタデータを取得するにはどうすればいいんだろう?

上記の疑問にお答えします。

では、解説していきます。

WordPressのメタデータとは

WordPressのメタデータは、コンテンツに付随する追加情報を格納するための手段です。具体的には、2つの主要な種類があります。

1. コンテンツメタデータ

投稿メタデータ(Post Metadata)

投稿やページなどのコンテンツには、通常の本文以外にもさまざまな情報が含まれます。これには、特定の記事に関する情報を保存するための「カスタムフィールド」と呼ばれるものがあります。例えば、記事ごとに異なる特別な属性やデータを保存するのに便利です。カスタムフィールドは、管理画面で記事を編集する際に追加でき、テーマファイルやプラグインからもアクセスできます。これにより、記事ごとに異なる情報を保持できます。

ページメタデータ(Page Metadata)

ページも同様に、特定のページに関する情報を格納するためにカスタムフィールドを使用できます。これにより、ページごとに異なるデータを保存できます。

2. ユーザーメタデータ

ユーザーメタデータ(User Metadata)

WordPressでは、ユーザーに関する情報もメタデータとして保存できます。ユーザーごとに異なる情報(例:プロフィール画像、役職、連絡先情報など)を格納するのに役立ちます。ユーザーメタデータは、ユーザーのプロフィールページで管理できます。テーマやプラグインからもアクセスでき、必要に応じて利用できます。

要するに、WordPressのメタデータは柔軟性があり、様々な種類の情報を管理するのに使える仕組みです。これにより、特定のコンテンツやユーザーに対して独自の情報を付加することが可能になります。

投稿や固定ページのメタデータを取得するには

投稿や固定ページのメタデータを取得する方法にはいくつか方法がありますが、ここではget_metadata()関数を使用したメタデータの取得方法をご紹介します。

get_metadata()関数は、WordPressでオブジェクトのメタデータを取得するための関数です。これを使用することで、投稿、ページ、ユーザーなどのオブジェクトに関連するメタデータを取得できます。以下はget_metadata()関数の基本的な構文と使用例です。

get_metadata()の基本的な構文と使用例

構文

get_metadata( string $meta_type, int $object_id, string $meta_key, bool $single = false );

パラメータ

説明
$meta_type[必須] stringpostcommenttermuserなどのオブジェクトタイプを指定します。
$object_id[必須] int$meta_typeで指定したオブジェクトタイプのオブジェクトIDを指定します。postを指定した場合は投稿IDを、pageを指定した場合はページIDを指定します。
$meta_key[任意] stringメタデータのキーを指定します。指定がない場合はオブジェクトのすべてのメタデータを取得します。
$single[任意] boolメタデータのキーを指定した場合に有効なオプションです。指定されたメタデータのキーの値のみを返します。

使用例

// 投稿IDが 1 の投稿の 'custom_field' というカスタムフィールドのメタデータを取得
$meta_value = get_metadata('post', 1, 'custom_field', true);

// ユーザーIDが 5 のユーザーの 'profile_picture' というメタデータを取得
$profile_picture = get_metadata('user', 5, 'profile_picture', true);

上記の使用例では、get_metadata() 関数を使用して指定されたオブジェクトのメタデータを取得しています。$meta_type にはオブジェクトのタイプ(postuserなど)、$object_idには対象となるオブジェクトのID(投稿ID、ユーザーIDなど)、$meta_key には取得したいメタデータのキーを指定します。$singletrue に設定すると、単一の値が返されます。

get_metadata()ですべてのメタデータを取得するには

get_metadata()関数を使用して、指定したオブジェクト(postuserなど)に関連するすべてのメタデータを取得するには、$meta_keyパラメータと$singleパラメータを指定せずに関数を呼び出します。以下はそのための基本的な構文です。

構文

get_metadata( string $meta_type, int $object_id );

使用例

// 投稿IDが 1 の投稿のすべてのメタデータを取得
$metadata = get_metadata('post', 1);

// ユーザーIDが 5 のユーザーのすべてのメタデータを取得
$metadata = get_metadata('user', 5);

メインループ内の使用例

メインループ内で get_metadata()関数を使用して、すべてのメタデータを取得する場合の使用例です。以下では指定した投稿IDの投稿が持つすべてのメタデータを取得しています。

<?php

if(have_posts()): while(have_posts()) : the_post();

        // 現在の投稿のIDを取得
        $post_id = get_the_ID();

        // 現在の投稿のすべてのメタデータを取得
        $metadata = get_metadata('post', $post_id);

        // メインループ内で取得したメタデータを使用して表示などの処理を行う
        ?>
        <article>
            <h2><?php the_title(); ?></h2>

            <?php
            // すべてのメタデータを表示
            if($metadata):
                echo '<ul>';
                foreach ($metadata as $key => $value):
                    echo '<li>' . esc_html($key) . ': ' . esc_html(implode(', ', $value)) . '</li>';
                endforeach;

                echo '</ul>';
            endif;
            ?>

            <!-- 他のコンテンツ表示など -->
        </article>
        <?php

    endwhile;
else :
    // 投稿がない場合の処理
endif;

上記例では、get_metadata()関数に$meta_keyを指定せずに呼び出しています。これにより、指定した投稿のすべてのメタデータが配列として取得されます。その後、foreach ループを使用して各メタデータのキーと値を表示しています。

以上で投稿や固定ページのすべてのメタデータを取得して表示することが可能です。

参考:get_metadata() | Function | WordPress Developer Resources

最後に


WordPressのget_metadata()関数は、オブジェクト(postuserなど)に関連するメタデータを取得するための優れた関数です。基本の構文に従ってオブジェクトの種類とIDを指定し、必要なメタデータを取得できます。メインループ内で使用すると、各投稿に関連するメタデータを簡単に取得し、カスタムな表示を実現できます。get_metadata()を利用して、WordPressのサイトをより柔軟かつ効果的に構築してくださいね!

以上、WordPressのget_metadata()を使用して投稿や固定ページのすべてのメタデータを取得する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。