投稿ページの情報取得
Image by Sergey Nemo from Pixabay
2020.11.22(更新日:2020.12.11)
似たような関数名があったりして何回も調べたり、今更ながら「こんなの知らんかった!」となることも多いwordpress。
投稿ページは「投稿ID」さえわかれば何とかなる。今回は基本的な情報取得をまとめ。
より良く忘れる投稿ページのカテゴリ系の情報はまた別途書く予定。
この記事は1年以上経過しています。内容的に古い場合があります。
スラッグ名から投稿のID(数値)を取得
$post_id = get_posts( 'スラッグ名' );
$post_id = $post_id[0]->ID;
//もしくは
$post_id = get_page_by_path( 'スラッグ名', 'OBJECT', '投稿タイプ' );
$post_id = $post_id->ID;
投稿ページはであまりやらないけれど一応。もちろんループ外でOK。
投稿タイトル取得
ループ内で使用し即出力(表示)
the_titleは第1引数にタイトル前に、第2引数にタイトル後に置くテキストを入れられる。第3引数をfalseでPHPで使用できる値を取得出来る。
ループ内で使用しPHPで使用できる値として取得
$post_title = get_the_title();
ループ外の場合は投稿IDを引数に
$post_title = get_the_title( $post_id );
single_post_titleなんていうのもある。ループ外で使用出来る。
single_post_title( $prefix, $display );
$prefixは記事タイトルの前に出力するテキスト。$displayをfalseでPHPの値として取得。引数を空にするとそのまま表示。
またimgタグのaltにタイトルを入れる際に使えそうなこんなのも。
the_title_attribute( $args );
$args = array(
'before' => '', //タイトルの前に表示するテキスト
'after' => '', //タイトルの後に表示するテキスト
'echo' => '', //falseでPHPの値で返す
'post' => '' //投稿ID。空の場合現在の投稿・・・ってことはループ内で使用
};
便利そうだけれどesc_attrでタイトルを返した方がわかりやすい気がする。
投稿の本文取得
ループ内で使用し即出力(表示)
ループ内で使用しPHPで使用できる値として取得
$post_content = get_the_content();
ループ外でも(該当ページ外でも)投稿のIDでPHPから使用できる値として取得
残念ならが get_the_content( $post_id ) とはならない。少々面倒くさい。
$post_content = apply_filters('the_content', get_post_field( 'post_content', $post_id ));
どの投稿記事なのか$post_id(投稿ID)を指定してget_post_fieldで投稿情報の要素を取得する。他の様々な情報も取得できる。the_contentと同等にしたければフィルターを通し返す。
抜粋取得
投稿記事編集ページにあるカスタムフィールド「抜粋」。
ループ内で使用し即出力(表示)
上記を使用して表示した文字は文字数の制限(110字)がある。また抜粋のカスタムフィールドが空の場合、本文の頭から110文字を抜粋して表示してくれる。日本語の場合この文字数が意図しない結果になるのでWP Multibyte Patchをインストール推奨。
ループ内で使用しPHPで使用できる値として取得
$excerpt = get_the_excerpt();
ループ外でも(該当ページ外でも)投稿のIDからPHPで使用できる値として取得
$excerpt = apply_filters( 'the_excerpt', get_post_field( 'post_excerpt', $post_id ) );
どの投稿記事なのか$post_id(投稿ID)を指定してget_post_fieldで投稿情報の要素を取得する。the_contentと同じ。the_excerptと同等にしたければフィルターを通し返す。