WordPressのテーマ作成をしていると、ループでカスタムフィールドを利用したり、文字数制限や投稿別にクラス付けなどをつけたりしたときがあります。タイトルやコンテンツを表示する際は通常the_title()やthe_content()などを利用すると思いますが、表示方法を変えたいときはこれらの情報を取得する必要が出てきます。まとめてみました。
$postについて
ループ内ではthe_post()などによって$postに記事の情報が格納されます。そのため、$post->○○
とすれば取得できますが、パーマリンクや時間など、表示形式を変更する必要があるものもあります。
投稿をget_posts()で取得しforeachでまわす場合は必ずしも$postではありません。
以下はまとめていますが、固定ページや投稿、取得方法によって異なる場合があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[ID] //投稿ID [post_author] //著者ID [post_date] //投稿日時 [post_date_gmt] //投稿日時(グリニッジ標準時刻 [post_content] //本文 [post_title] //タイトル [post_excerpt] //抜粋 [post_status] //公開かどうか(publish:公開,draft:下書き,private:非公開,Inherit,future:予約,Auto-draft:自動下書き,trash:ゴミ箱) [comment_status] //コメント許可(open,closed) [ping_status] //ピンバックの許可(open, closed) [post_password] //記事閲覧の為のパスワード [post_name] //スラッグ [to_ping] //ピン通知URL [pinged] //ピンバック送信先URL [post_modified] //更新日時 [post_modified_gmt] //更新日時(gmt) [post_content_filtered] [post_parent] //親のあり・なし(0,1) [guid] //パーマリンクの元となるURL(パーマリンクは設定によって異なるため、このままではNG) [menu_order] [post_type] //投稿タイプ(post,page,revision,Attachment...) [post_mime_type] [comment_count] //コメント数 [filter] |
取得のまとめ
IDを取得
get_the_ID()
get_the_IDは現在のIDを取得します。投稿のIDを渡すと該当する投稿のタイトルを返します。
$post->ID
$postに格納された連想配列からIDを取り出します。
$id
現在の投稿IDのグローバル変数です。
タイトルを取得
get_the_title()
get_the_titleは現在のタイトルを取得します。投稿のIDを渡すと該当する投稿のタイトルを返します。
$post->post_title
$postに格納された連想配列からタイトルを取り出します。
スラッグを取得
$post->post_name
パーマリンクを取得
get_permalink()
get_permalinkは現在のパーマリンクを取得します。投稿のIDを渡すと該当する投稿のパーマリンクを返します。
時間を取得
get_the_time('Y.m.d')
get_the_timeは現在の時間を指定されたフォーマットで取得します。フォーマットの指定は日付文字列の書式で、省略するとWP設定画面のものになります。投稿のIDを渡すと該当する投稿のタイトルを返します。
get_post_time()
get_post_timeは投稿の日時を取得します。
本文を取得
$post->post_content
get_post_timeは投稿の日時を取得します。
メタ情報を取得する
get_post_meta($post->ID,'メタキー',true)
get_post_metaは、投稿IDのメタキーの値を取得します。
カテゴリーを取得する
get_the_category()
get_the_category()は投稿のカテゴリーを取得します。選択されたカテゴリー全てを取得するには、foreachなどで回す必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$cat = get_the_category(); $cat->term_id; //ID $cat->name; //名前 $cat->slug; //スラッグ $cat->term_group; //グループID $cat->term_taxonomy_id; //タクソノミーID $cat->taxonomy; //タクソノミー名(category等) $cat->description; //カテゴリーの説明 $cat->parent; //親カテゴリID(なければ0) $cat->count; //投稿数 $cat->object_id; // $cat->filter; // $cat->cat_ID; //(文字列)カテゴリID $cat->category_count; //(文字列)投稿数 $cat->category_description; //(文字列)説明 $cat->cat_name; //(文字列)カテゴリ名 $cat->category_nicename; //(文字列)カテゴリスラッグ名 $cat->category_parent; //(文字列)親カテゴリ |
以下はループ内で単純にカテゴリーを取得してリスト化する例です。リンク部分についてはパーマリンク設定に合わせて行って下さい(1行目と7行目の「href」の部分)。リストを取得するget_category_listなどもありますが、スラッグによる分岐やクラスをつけたい時に便利かもしれません。
1 2 3 4 5 6 7 8 9 10 |
$catUrl = get_option('siteurl').'/category/'; //スラッグなどを除くカテゴリーページのURL $cats = get_the_category(); //現在の投稿のカテゴリー一覧を取得 $catList = '<ul>'."n"; //htmlを$catListに追加していく。 foreach($cats as $cat) : //foreachで回す $catName = $cat->cat_name; //名前 $catSlug = $cat->category_nicename; //スラッグ $catList .= '<li><a href="'.$catUrl.$catSlug.'/" title="'.$catName.'一覧へ">'.$catName.'</a></li>'."n"; endforeach; $catList .= '</ul>'."n"; //ulを閉じる echo $catList; //出力する |
著者(投稿者)を取得する
get_the_author_meta()
the_author_meta()は投稿者情報を取得します。以下のように何を取得するか入れる必要があります。
get_the_author_meta('ID')
ユーザID
get_the_author_meta('login')
ログイン名
get_the_author_meta('nicename')
ユーザのスラッグ
get_the_author_meta('email')
メールアドレス
get_the_author_meta('url')
ユーザサイトのURL
get_the_author_meta('registered')
登録日時
get_the_author_meta('status')
ステータス
get_the_author_meta('display_name')
ユーザーの表示名
get_the_author_meta('user_description')
プロフィール情報
[…] 何か処理を加えたいときに取得する方法です。取得については「WordPress ループ内で投稿情報を取得する」でまとめてあります。 […]