WordPressで記事ごとにオリジナルのメタデータを保持
メタデータを使用する
WordPressでは、記事ごとに独自のデータを管理する機能が備わっていて、その機能は
カスタムフィールド
と呼ばれています。
カスタムフィールド機能を使って、記事ごとに複数のメタデータを格納することが出来るようになります。
基本的な使い方
記事単位のメタデータを保存する基本的なコードです。
function save_first_image() { update_post_meta( get_the_ID(), 'sample', 'data' ); } add_action('save_post', 'save_first_image');
上のコードをfunctions.phpの最後に追加し、記事を保存/更新すればメタデータが保存されます。
update_post_meta()を利用することで、
- 新規のメタデータ
- 既存のメタデータ
をそれぞれ追加/更新することが可能です。
上のコードでは、
sampleというキー名でdataという値
が
記事の新規作成/更新時(save_post)に
メタデータとして追加されます。
メタデータの使用例
具体的なメタデータの使用例をあげてみます。
- アクセス解析データ
- 記事の画像URL
アクセス解析ツール(Google Analyticsなど)で管理されている、記事ごとのアクセス数や閲覧時間などをメタデータとして管理しておけば、サイト内でアクセス解析データに基づいた記事の表示を行うことが出来ます。また、記事の画像URLを本文から取得してメタデータ化しておくことで、アイキャッチ画像として使用することが出来ます。
アイデア次第で、独自の値をベースにしたサイト運営が出来るようになります。
実践
記事の本文から最初の画像URLを取得して、そのURLを値とするメタデータを格納するコードを書いてみます。
function save_first_image() { // 記事本文取得 $post = get_post(get_the_ID()); $content = $post->post_content; // 最初の画像URLを取得 $first_img = ''; $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches); $first_img = $matches[1][0]; // メタデータ保存 update_post_meta( get_the_ID(), 'first_image', $first_img ); } add_action('save_post', 'save_first_image');
WordPressの管理画面で記事を保存/更新すれば、下の画像で確認できるようにカスタムフィールドが追加されます。
アーカイブ系のページでの利用
記事ごとに保存したメタデータは、個別記事ページだけでなく、トップページやカテゴリページなどのアーカイブ系のページでも利用可能です。
テーマ構成ファイルの
content.php
でメタデータとして追加したfirst_imageを取得して、ページ内で画像を利用することが出来ます。
$my_eye_catch = get_post_meta(get_the_ID(), 'first_image', true);
get_post_meta()を利用して、ループ内で個々の記事のメタデータを取得することが可能です。