web-dev-qa-db-fra.com

Obtenir l'ID de la page la plus proche de l'URL

Disons sur mon site WordPress que je navigue vers:

www.example.com/media-centre/news/17/an-example-news-post

Dans ce cas, je regarde un poste dans un CPT appelé News.

Ce que je veux faire, c'est obtenir l'ID de page le plus proche de cette URL. Je sais que l'identifiant de page le plus proche peut être trouvé à l'adresse:

www.example.com/media-centre/news/

Alors, comment puis-je revenir en arrière sur mon URL pour trouver la page la plus proche, puis comment obtenir l'ID de cette page?

1
Brady

Je suis arrivé là-bas avec l'aide de Stephen Harris et quelques PHP aides à SO.

$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

Vous devriez pouvoir obtenir l'URL actuelle de $url = add_query_arg().

Ensuite, en supposant que la structure: www.example.com/page/subpage/news/ID/post, vous pouvez utiliser preg_match pour extraire /page/subpage/news. Il serait alors simple d’utiliser get_page_by_path(); .

Si cela échoue, vous pouvez alors vérifier /page/subpage/ et enfin /page.

2
Stephen Harris