WordPress の投稿の post_name 、いわゆるページのスラッグがわかっていて、そのスラッグを頼りに記事のタイトルやリンクを取得したい場合があります。
その場合は get_page_by_path 関数を使うと便利です。
get_page_by_path 関数の第一引数には投稿の post_name (スラッグ)を、第二引数にはアウトプットされる返り値のタイプを、第三引数には投稿タイプを入れます。
例えば、当サイトの記事「WordPress カスタム投稿でCSV一括アップロードする(複数カスタムフィールド対応)」のスラッグは wp-custompost-csv-upload ですので、この記事の場合は以下のように記述することでスラッグから投稿オブジェクト(WP_Object)が取得できます。
$post = get_page_by_path('wp-custompost-csv-upload', OBJECT, 'post');
投稿オブジェクトが取得できたら、あとは ID を取得して get_the_title や get_the_permalink 関数で、記事タイトルやリンクを取得することができますね。
投稿のスラッグから記事タイトルを取得する
$post = get_page_by_path('wp-custompost-csv-upload', OBJECT, 'post');
echo esc_html( get_the_title($post->ID) );
投稿のスラッグから記事 URL を取得する
$post = get_page_by_path('wp-custompost-csv-upload', OBJECT, 'post');
echo esc_url( get_the_permalink($post->ID) );
今回の例では get_page_by_path の第二引数として OBJECT を指定していますが、指定できる返り値は OBJECT 以外に、ARRAY_A と ARRAY_N がありました。
ARRAY_A の場合は ID などがキーとなる配列、ARRAY_N の場合は 0, 1, 2… のように連番キーとなる配列が返り値として設定されます。
デフォルトの OBJECT 以外に配列で受け取りたいという場合は使いわけができるようです。
また、第三引数の投稿タイプについて、今回は通常の post を指定していますが、 デフォルトは page です。この第三引数はカスタム投稿でも動作します。
参考情報
get_page_by_path() – Function | Developer.WordPress.org
コメント