web-dev-qa-db-ja.com

URLから最も近いページIDを取得する

私がナビゲートする私の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を取得するのですか。

1
Brady

スティーブン・ハリスといくつかの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 );
}
1
Brady

$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をチェックしてください。

2
Stephen Harris