Si je définis Paramètres de lecture > Posts Page (en d'autres termes, le page_for_posts
) sur une page statique, puis tentez de transmettre son URL via url_to_postid()
, il renverra 0
- pourquoi?
Je comprends que ce n’est techniquement plus une page statique/postale, c’est la page posts, mais cette page a toujours un identifiant et j’ai toujours besoin de l’obtenir. Assez drôle, je dois obtenir l'ID pour pouvoir vérifier si est la même valeur que page_for_posts
. Je ne peux pas utiliser le 0
renvoyé par la fonction url_to_postid car 0 peut être renvoyé pour plusieurs raisons.
Est-ce que quelqu'un sait comment je peux tester l'URL actuelle pour obtenir son ID, quand il est défini sur la page page_for_posts
?
La raison pour laquelle vous obtenez 0 en retour est due au test à la fin de la fonction:
if ( ! empty( $query->posts ) && $query->is_singular )
return $query->post->ID;
else
return 0;
La page des messages ne réussissant pas le test is_singular
, 0 est renvoyé.
Si vous avez une URL et que vous voulez savoir s'il s'agit de la page de publication, vous pouvez la faire correspondre au lien permanent renvoyé par get_permalink
lorsque l'option page_for_posts
est passée:
$page_for_posts_url = get_permalink( get_option( 'page_for_posts' ) );
if( $current_url == $page_for_posts_url ) echo 'this is the page for posts!';
La page des messages n'est pas une page . Par exemple, définissez une page avec un modèle de page comme page de messages et vous n'obtiendrez pas le modèle de page. Au lieu de cela, vous verrez probablement archive.php
ou index.php
, car la boucle/requête principale ne charge pas une page, elle charge l'archive principale de publication.
D'où ce code:
if ( ! empty( $query->posts ) && $query->is_singular )
return $query->post->ID;
else
return 0;
Lorsque vous êtes sur la page d'articles, is_singular
est faux, car il s'agit d'une page d'archive et non d'une page d'article.
Ainsi, il n'y a pas de publication à cette URL, et donc 0
est approprié, car c'est un code d'erreur n'indiquant aucune publication.
Jetez un coup d'oeil à cette fonction, cela peut être utile. Fonction WP get_page_by_path ()