投稿や固定ページのタイトルから、投稿ID等のページ情報を取得する方法をご紹介いたします。
投稿のタイトルから情報を取得する方法
投稿のタイトルから情報を取得するには、get_page_by_title関数を使用します。
以下のように記述することで、投稿のページ情報を取得できます。同じタイトルの投稿が複数存在する際は、投稿IDが最小の投稿を返します。「post」の部分で投稿タイプを指定しています。
$post = get_page_by_title('タイトル', OBJECT, 'post');
上記の場合、$postには以下の情報が格納されます。
$post->ID | 投稿ID |
$post->post_author | 著者ID |
$post->post_date | 投稿日 |
$post->post_date_gmt | 投稿日(GMT) |
$post->post_content | 本文 |
$post->post_title | タイトル |
$post->post_excerpt | 抜粋 |
$post->post_status | ステータス |
$post->comment_status | コメントステータス |
$post->ping_status | ピンバックステータス |
$post->post_password | アクセスパスワード |
$post->post_name | スラッグ |
$post->post_modified | 最終更新日 |
$post->post_modified_gmt | 最終更新日(GMT) |
$post->post_parent | 親ページ |
$post->guid | デフォルトのURL |
$post->menu_order | 先頭に固定 |
$post->post_type | 投稿タイプ |
$post->comment_count | コメント数 |
$post->post_mime_type | MIMEタイプ |
「echo $post->ID;」のようにそのまま値を出力することも可能ですが、他の処理と組み合わせるケースの方が多いと思います。
function my_content( $content ) {
$post = get_page_by_title('タイトル', OBJECT, 'post');
if ( is_single( $post->ID ) )
$content = "本文の置き換え";
return $content;
}
add_filter( 'the_content', 'my_content' );
こちらの例は、該当するタイトルの投稿本文を置き換えています。
固定ページのタイトルから情報を取得する方法
固定ページのタイトルから情報を取得する場合もget_page_by_titleを使用します。投稿と同様に、同じタイトルの固定ページが複数存在する際は、投稿IDが最小の固定ページを返します。
固定ページの場合は取得した値を直接出力できないので、以下のように他の処理と組み合わせて活用します。
$page = get_page_by_title( 'タイトル', OBJECT, 'page' );
wp_list_pages( 'exclude=' . $page->ID );
上記の場合、該当するタイトルの固定ページを除外した一覧を出力します。
あとがき
投稿や固定ページのタイトルからページの情報を取得したい場合は、ぜひ参考にしていただければと思います。
なお、「URLからページタイトルを取得・出力する方法」も過去に紹介していますので、こちらもぜひチェックしてみてください。