このページでは、特にワードプレスのテーマ開発・プラグイン開発の入門者向けにメタデータについて解説します。
図や具体例を用いることで、できるだけ分かりやすく解説しているつもりですので、是非メタデータを理解したい方・使いこなしたい方に読んでいただければと思います。
最初にメタデータについて説明し、続いてメタデータを追加して利用する方法、最後にページビュー数を表すメタデータを実際に追加・更新・利用する方法について説明していきたいと思います。
是非理解しておきたいところだね!
このページではそんな「メタデータって何?」って疑問に思っている人にメタデータについて解説していくよ
Contents
メタデータとは
まずはメタデータをざっくり説明すると「データ本体を説明する “あると便利な情報”」です。
特にワードプレスにおいてのデータ本体の一つは「投稿記事(特に投稿記事本文・投稿記事本文に含まれる画像なども含めて)」です(他にもコメントやユーザーもデータの本体となります。が、このページでは投稿記事に絞って解説します。)。
投稿記事本文があれば最低限のページ表示は出来てしまいますよね?
しかし、ワードプレスでは、データ本体以外にも下記のような情報が付加されており、これらのデータも投稿記事本体と一緒にデータベース(MySQL)に保存されています。
- 投稿 ID
- タイトル
- 作成者
- タグ
- カテゴリ
- 公開日
- 更新日
ここで列挙したのは一例ですが、これらがワードプレスの投稿記事におけるメタデータです。
このメタデータはデータ本体を説明する情報です。
下記を見るとこれらのメタデータがデータ本体である投稿記事を説明する情報であることが理解していただけると思います。
- 投稿 ID:投稿記事の ID を示す情報
- タイトル:投稿記事のタイトルを示す情報
- 作成者:投稿記事の作成者を示す情報
- タグ:投稿記事のキーワードを示す情報
- カテゴリ:投稿記事のカテゴリ(分類)を示す情報
- 公開日:投稿記事の公開日を示す情報
- 更新日:投稿記事の最終更新日を示す情報
さらに、これらの情報はデータ本体である投稿記事を説明するだけでなく、”あると便利な情報” です。
もし、これらの情報が無くなる(設定出来なくなる)としたらどう思うでしょうか?
おそらく大半の方が、上記の情報が無くなると困ると言うと思います。
これは、例えば「カテゴリページを表示する」機能など、メタデータの利用により多くの便利な機能が実現されているからです。メタデータは、データ本体ではないので必須ではないけれど、”あると便利な情報” なんです。
続いては、このメタデータがどのように利用されているかを説明し、このメタデータがどのように便利なのかをさらに実感していただこうと思います。
メタデータの使い方
ここでは、メタデータがどのように利用されているかを説明していきたいと思います。
主にワードプレスではメタデータが下記のように利用されています。
- メタデータを使って投稿記事を検索する
- メタデータを使って投稿記事を整列する
- メタデータの情報に応じて表示内容を変更する
- メタデータの情報を表示する
これらの4つのメタデータの利用について一つ一つ解説していきます。
スポンサーリンク
メタデータを使って投稿記事を検索する
メタデータがあると簡単に投稿記事を検索できます。
データベースでは、下記の表のような構造でメタデータを投稿記事に紐づける形で管理しています。
上のデータ構造の表は分かりやすさを優先して書いていますので、実際のデータ構造とはちょっと違います
例えばカテゴリ名(category_name)はタクスノミーのデータとして別の表で管理されています
といっても、イメージを掴むためには上の図の方が分かりやすいと思いますので、まずはこんな感じでメタデータが管理されていることを理解していただければ良いと思います
縦軸が各投稿記事を表し、横軸が投稿記事に付加されるメタデータの種類を表しています。各メタデータはそれぞれ投稿記事を説明するデータです。この「メタデータの種類」はキーとも呼ばれます。
上記の表の場合は各キーは次のようなメタデータの種類を表しています。
- ID:投稿 ID
- post_title:タイトル
- post_date:投稿日
- post_modified:更新日
- category_name:カテゴリ名
データベースでは、各投稿に対して、各キーの情報がそれぞれ設定(保存)されていいます。
例えば下の図のオレンジ枠で囲った部分に注目してみましょう。
このオレンジ枠で囲った部分は「投稿記事D」のメタデータであり、投稿記事Dは各キーに対して下記のメタデータを持つことが分かります。
- ID:4
- post_title:茄子の紹介
- post_date:2020/2/15
- post_modified:2020/2/16
- category_name:vegetable
このように投稿記事に対してメタデータが紐付けて管理されているので、投稿記事の検索が簡単に行えます。
例えばカテゴリが「fruit」の投稿記事のみを検索するのであれば、’category_name’ キーが「fruit」の投稿記事を抽出してやれば良いです。
特定のカテゴリの投稿記事のみを検索して取得されたデータをページに表示することで、カテゴリページを作成することができます。
といっても、ワードプレスのテーマ開発やプラグイン開発ではデータベースに直接アクセスするわけではなく、クエリを発行することでデータベースから投稿データを取得します。
例えば上記のように、カテゴリーが「fruit」の投稿データのみを取得するのであれば、single.php や sidebar.php 等のテンプレートファイルから下記のようにクエリを発行することで、検索結果を取得することができます。
$myquery = array(
'category_name' => 'fruit',
);
$posts = new WP_Query( $myquery );
あとはループを作って投稿データを表示してやれば「fruit」のカテゴリページができます。
クエリに関しては下記で解説していますのでこのページの後にでも読んでみていただけると幸いです。
ワードプレスのクエリとは?メインクエリとサブクエリの違いは?で、ここで重要なのはこのカテゴリ検索は投稿記事に「カテゴリを表すメタデータ」が付加されていないと実現できないってことです。
このメタデータが付加されていることで、便利な検索機能が実現できます。メタデータは便利な情報です。
メタデータを使って投稿記事を整列する
メタデータを使って投稿記事を整列することもできます。
例えば投稿記事に対して「投稿日」というメタデータが付加されているため、投稿日を表すキーに対して降順に並び替えれば投稿日の新しい順、昇順に並び替えれば投稿日の古い順に投稿記事を整列することができます。
例えば下記のようにしてクエリを発行すれば、投稿日の新しい記事の投稿記事のデータが5つ取得できます。
$myquery = array(
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => 5,
);
$posts = new WP_Query( $myquery );
この取得したデータを利用して「最近の記事一覧」みたいなウィジェットとして表示することも可能です。
これも投稿記事に「投稿日を表すメタデータ」が付加されているからこそ簡単に行うことができます。
同様に「更新日を表すメタデータ」を利用して更新順に投稿記事を整列することも可能です。
メタデータの情報に応じて表示内容を変更する
またメタデータは投稿記事の検索や整列以外でもさまざまな用途があります。
投稿記事に付加されたメタデータの情報に応じてページの表示内容を変更するようなことも可能です。
例えば、投稿記事の「カテゴリ」メタデータを利用して、カテゴリに応じてページの見た目を変更するようなことも可能です。
スポンサーリンク
メタデータの情報を表示する
さらにメタデータの情報は(当然ですが)ページに表示することも可能です。
例えば私のウェブサイトだと「タイトル」「投稿日」「更新日」のメタデータの情報が表示されています。
同様に「作成者」の名前なども表示することも可能です。
すごく当たり前のように感じてしまうかもしれませんが、これは、投稿記事にこれらのメタデータが付加され、データベースで管理されているからこそ簡単に表示できる情報です。
メタデータを追加して利用する
もちろん!しかも簡単にできちゃうよー
ワードプレスではメタデータを簡単に追加することができます。
メタデータ追加の例
例えば追加するメタデータの例として分かりやすいのが「ページビュー数(ページ閲覧回数)」のメタデータですね。投稿記事に対して「この投稿記事は XX 回閲覧されました」という説明を行うメタデータです。
ページビュー数をメタデータとして追加してやれば、下記のようなことも行うことができます。
- ページビュー数が多い投稿記事だけ検索して表示することで「人気記事一覧」を作成する
- ページビュー数が多い順に投稿記事を整列させることで「人気順に投稿記事」を表示する
- ページビュー数が多い投稿記事に対してのみ「人気記事です!!」マークを表示する
- ページビュー数を投稿記事に表示する
実際にこのメタデータを使用されているウェブサイトも多いです。例えばウェブページのサイドバーでよく見る「人気記事一覧」もこのページビュー数のメタデータを使用すれば簡単に作成できます。
その他にも下記のようなメタデータを投稿記事に付加させることで、いろんな機能を実現することができます。
- 最終閲覧日:その投稿記事が最後にいつ閲覧されたかを表示したり、最近閲覧された投稿記事一覧を作成したりする
- 投稿記事本文の文字数:その投稿記事の文字数を表示したり、文字数から閲覧に要する時間を計算して表示したりする
- ページの色合い:ページの色合いを設定できるようにしておくことで、ページ表示時にページの背景や文字の色などを変更する
- サブタイトル:投稿記事のサブタイトルを設定できるようにしておくことで、タイトルの下にサブタイトルを表示する
これらはほんの一例ですが、独自のメタデータを投稿記事に追加することで、独自の機能を実現することもでき、他のテーマや他のプラグインに対して差別化することもできます。
ここでは、このメタデータを追加し、そして利用する方法を「ページビュー数」を実例に説明していきたいと思います。
スポンサーリンク
メタデータを追加して利用する方法
メタデータを追加して利用するためには下記の3つのことを行う必要があります。
- メタデータを追加する
- メタデータを必要に応じて更新する
- メタデータを取得して利用する
メタデータを追加する
まずは投稿記事に対してメタデータを追加して付加してやる必要があります。
前述の通りデータベースでメタデータは投稿記事に紐づける形で管理されています。
メタデータを追加するとは、データベースで管理されるこの表に新たな列を追加し、その列に投稿記事毎のメタデータの情報を設定・保存するイメージになります。
このメタデータの追加は add_post_meta 関数を利用することで実現することができます。
add_post_meta 関数は、下記のような関数になります。
使い方:
<?php add_post_meta( $post_id, $meta_key, $meta_value, $unique ); ?>
関数の説明:
投稿 ID が $post_id の投稿記事に対して、$meta_key をキーとするメタデータの情報として、$meta_value を設定する
$unique が true の場合は、既に投稿 ID が $post_id の投稿記事に $meta_key をキーとするメタデータが設定されている場合は関数実行が失敗する(オプション)
戻り値:
成功時は基本的に true、失敗時は false
例えばページビュー数を表すメタデータをキー「_my_view_count」として追加するためには下記のように add_post_meta 関数を実行します。
<?php
add_post_meta( 5, '_my_view_count', '1', true );
?>
これによりメタデータを管理するデータベースで、投稿 ID が “5” の投稿記事に対して、_my_view_count をキーとするメタデータが追加され、その情報(値)として “1” が設定されます。
例えば single.php で add_post_meta 関数を実行すれば、投稿記事のページが表示される際に、その投稿記事のページビュー数のメタデータを追加することができます。
キー名の先頭にアンダーバー “_” をつけることで、後に説明するカスタムフィールドでのメタデータ設定を不可にすることができます
投稿編集画面から手動で設定されたくないメタデータのキー名には先頭にアンダーバーをつけておきましょう
メタデータ(ページビュー数)の情報を更新する
特にページビュー数のように、投稿記事のページが表示されるたびに、メタデータに設定される情報を更新したい場合もあると思います。
その場合は update_post_meta 関数を使用します。udate_post_meta 関数は、下記のような関数になります。
使い方:
<?php update_post_meta( $post_id, $meta_key, $meta_value, $prev_value ); ?>
関数の説明:
投稿 ID が $post_id の投稿記事の $meta_key をキーとするメタデータの情報を、$meta_value に更新する
$prev_value を指定した場合は、元々のメタデータの値が $prev_value の場合のみ更新される(オプション)
戻り値:
成功時は true、失敗時は false
参考:
投稿 ID が $post_id の投稿記事がまだ $meta_key をキーとするメタデータの情報が追加されていない場合は、関数内部でメタデータの追加が行われる。この時のみ戻り値が追加したメタデータの ID となる
例えばページビュー数を表すキー「_my_view_count」の値を更新するためには下記のように update_post_meta 関数を実行します。
<?php
update_post_meta( 5, '_my_view_count', '2' );
?>
これによりメタデータを管理するデータベースで、投稿 ID が “5” の投稿記事の _my_view_count をキーとするメタデータの値が “2” に更新されます。
例えば single.php で update_meta_data 関数を実行すれば、投稿記事のページが表示される際にその投稿記事のページビュー数のメタデータを更新することができます。
メタデータ(ページビュー数)の情報を取得する
メタデータは追加・更新するだけでは意味がありません。利用することで価値のあるデータになります。
メタデータを利用するためには、まずメタデータの情報を取得します。このメタデータの情報取得には get_post_meta 関数を利用します。
get_post_meta 関数は、下記のような関数になります。
使い方:
<?php $meta_values = get_post_meta( $post_id, $key, $single ); ?>
関数の説明:
投稿 ID が $post_id の投稿記事の $meta_key をキーとするメタデータの情報を取得して $meta_values に格納する
$meta_key はオプションで、指定しなかった場合は $post_id の投稿記事の全てのメタデータを取得する
$single に true 指定した場合は文字列として情報を取得する(false の場合は配列として取得する、オプション)
戻り値:
取得した情報($single が true の場合は文字列として、指定しない or false の場合は配列措定情報を取得)
参考:
取得できるメタデータの情報は add_post_meta 等で独自に追加したメタデータのもののみ
例えばページビュー数を表すメタデータをキー「_my_view_count」の値を取得するためには下記のように get_post_meta 関数を実行します。
<?php
$view_count = get_post_meta( 5, '_my_view_count', true );
?>
これによりメタデータを管理するデータベースで、投稿 ID が “5” の投稿記事の _my_view_count をキーとするメタデータの値を文字列として取得することができます。
例えば single.php で get_meta_data 関数を実行すれば、投稿記事のページが表示される際に、その投稿記事のページビュー数を取得してページビュー数を表示することができます。
カスタムフィールドでメタデータを追加・更新する
実はメタデータはカスタムフィールドから追加・更新することもできます。
いい質問だね!ここではこの2つの違いをまとめておくよ
カスタムフィールドとは投稿編集画面の本文記入欄の下側やサイドバーとして表示されているフィールドであり、このカスタムフィールドもメタデータの情報を設定するものになります。
カスタムフィールドは投稿編集画面に表示され、ユーザーが自分で情報を設定できるので、特に手動でメタデータの情報を設定したい場合に使用すると良いです。
カスタムフィールドでメタデータの情報を設定するにしても、今回説明した add_post_meta 関数でメタデータを追加し(省略も可能)、update_post_meta 関数でメタデータの情報を更新、さらに get_post_meta 関数でメタデータの情報を取得するという流れは同じです。
ですので、カスタムフィールドを利用する場合にも、このページで解説している内容は役に立つと思います。
逆にページビュー数のように、手動ではなく自動でメタデータの情報を設定したい場合は、カスタムフィールドに表示せず、直接テンプレートファイルの中でメタデータの情報を設定するのが良いと思います(もしくはテンプレートファイル等から呼び出される関数の中で)。
と言っても、投稿編集画面では下の図のようにカスタムフィールドの追加を行うことができ、ここで既に追加しているメタデータを選択することで、そのメタデータの情報をカスタムフィールドから設定できるように変更することも可能です。
カスタムフィールドで情報を設定して欲しくないメタデータに関しては、キー名の先頭にアンダーバー “_” をつけると良いです。これにより上記画面でそのメタデータを選択することができなくなり、カスタムフィールドとして表示したり、投稿編集画面から手動で情報を設定することができなくなります。
メタデータを追加・更新・利用するプログラム例
最後にページビュー数を追加・更新・利用するプログラムの例を「ページビュー数」のメタデータを用いて紹介していきたいと思います。
スポンサーリンク
プログラム例1
最初に紹介するのはオーソドックスな例です。
下記のように single.php を作成することで、ページを表示するたびにページビュー数を更新し、ページにそのページビュー数を表示することができます。
<?php
get_header();
echo '<div id="content">';
/* この投稿記事の投稿 ID を取得 */
$pid = get_the_ID();
/* ページビュー数を表すメタデータを追加 */
if ( ! add_post_meta( $pid, '_my_view_count', '1', true ) ) {
/* 既にページビュー数を表すメタデータが追加されている場合 */
/* まずはこの投稿記事のページビュー数を取得 */
$view_count = get_post_meta( $pid, '_my_view_count', true );
/* ページビュー数を+1してメタデータを更新 */
update_post_meta( $pid, '_my_view_count', $view_count + 1 );
}
/* この投稿記事のページビュー数を取得 */
$new_view_count = get_post_meta( $pid, '_my_view_count', true );
/* 取得したページビュー数を利用して表示 */
echo '<p>このページは今までに' . $new_view_count . '回閲覧されています</p>';
while ( have_posts() ) {
the_post();
echo '<h1>';
the_title();
echo '</h1>';
the_content();
}
echo '</div>';
get_sidebar();
get_footer();
?>
プログラム例2
既存のテーマを利用している場合 single.php を変更したくないという方もいると思います。
その場合はフックを利用すると functions.php を変更するだけでページビュー数のメタデータを追加・更新・利用することができます。
<?php
/**
* ページビュー数をカウントアップ
* カウントアップ後のページビュー数を返却
*
* @param in $content : 投稿記事本文.
*/
function my_view_count_func( $content ) {
/* この投稿記事の投稿 ID を取得 */
$post_id = get_the_ID();
if ( ! is_single( $post_id ) ) {
return $content;
}
/* ページビュー数を表すメタデータを追加 */
if ( ! add_post_meta( $post_id, '_my_view_count', '1', true ) ) {
/* 既にページビュー数を表すメタデータが追加されている場合 */
/* まずはこの投稿記事のページビュー数を取得 */
$view_count = get_post_meta( $post_id, '_my_view_count', true );
/* ページビュー数を+1してメタデータを更新 */
update_post_meta( $post_id, '_my_view_count', $view_count + 1 );
}
/* この投稿記事のページビュー数を取得 */
$new_view_count = get_post_meta( $post_id, '_my_view_count', true );
/* 取得したページビュー数を利用して文字列に格納 */
$result = 'このページは今までに' . $new_view_count . '回閲覧されています
';
return $result . $content;
}
add_filter( 'the_content', 'my_view_count_func' );
?>
上記のプログラムを functions.php に追記すれば(必要に応じて “<?php” と “?>” は削除してください)、the_content フィルターフックにフックした my_view_count_func 関数が、the_content 関数実行時に自動的に実行されてページビュー数の更新と表示が行われるようになります。
まとめ
このページではまずメタデータについて説明し、続いてメタデータを追加して利用する方法、最後にページビュー数を表すメタデータを実際に追加・更新・利用する方法について説明しました。
特にワードプレスにおいてのメタデータは投稿記事(他にはコメントやユーザー)を説明する情報であり、このメタデータを利用して様々な便利な機能が実現されています。
是非メタデータを使いこなしてテーマやプラグインをさらに便利なものにしていきましょう!
このページで紹介したページビュー数のメタデータを利用して「同じカテゴリの人気記事一覧」を表示するウィジェットの作成方法を下記で紹介していますので、こちらも是非読んでいただければと思います。
「同じカテゴリの人気記事一覧」ウィジェットを自作する