私がナビゲートする私のWordPressウェブサイトで言うことができます:
www.example.com/media-centre/news/17/an-example-news-post
この場合、私はNews
と呼ばれるCPTの投稿を見ています。
私がやりたいことは、そのURLに最も近いページIDを取得することです。最も近いページIDは次の場所にあります。
www.example.com/media-centre/news/
では、どのようにして自分のURLをループバックして最も近いページを見つけたら、そのページのIDを取得するのですか。
スティーブン・ハリスといくつかのPHPからの援助で私自身をそこに持って行きました。
$page = get_closest_page();
// echo $page->ID;
function get_closest_page( $url = false )
{
global $wp;
if( ! $url )
$url = $wp->request;
$page = get_page_by_path( $url );
if( $page )
return $page;
$url = dirname( $url );
return get_closest_page( $url );
}
$url = add_query_arg()
から現在のURLを取得できるはずです。
それでは、www.example.com/page/subpage/news/ID/post
という構造体であれば、preg_match
を抽出するために/page/subpage/news
を使用できます。それなら get_page_by_path();
を使うのは簡単です。
それでもうまくいかない場合は、/page/subpage/
、最後に/page
をチェックしてください。