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?
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 );
}
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
.