Je vois des gens l’utiliser pour extraire du contenu de page sur leurs pages d’accueil, supprimer des catégories spécifiques d’archives, etc., par exemple.
$post = get_post( 5 );
Quelqu'un a suggéré que c'était une mauvaise pratique. Pourquoi est-ce mauvais et que devraient faire les utilisateurs à la place?
Pour commencer, explorons ce qui est vraiment 5
. C'est l'identifiant de la poste. Mais quelle est l'identification à son tour? C'est la valeur de la ligne de la table MySQL qui identifie l'enregistrement de publication spécifique.
Il y a donc tout d'abord des problèmes conceptuels. C'estpas content. Ce n'est pas quelque chose que l'utilisateur crée, manipule ou (le plus souvent) au courant. WP est (de par sa conception) assez sournois quant à la divulgation des identifiants aux utilisateurs et ne le fait presque jamais, créant plusieurs plugins juste à cette fin.
En tant que produit qui n'est pas contenu (ou valeursignificatifpour l'homme), ce n'est pas auto-documenté. Il n’ya aucun moyen de déduire ce que post 5
aurait pu être à partir de votre extrait de code.
Enfin, si ID identifie de manière unique la publication dansspecificdatabase, il est beaucoup moins certain de le faire dès que le contenu commence à se déplacer entre les bases de données et/ou même différents systèmes.
J'ai observé deux raisons typiques de récupérer et d'utiliser une publication autonome.
Le contenu persistant est généralement assez statique et, dans la plupart des cas, peut être identifié par un titre. Par exemple, dans votre extrait de code, l'identifiant faible 5
fait souvent référence à quelque chose comme la page "À propos de".
Pour récupérer ce contenu get_page_by_title()
convient. Malgré le nom, il accepte $post_type
en tant que troisième argument et ne fonctionnerait pas uniquement pour les pages.
Donc, en utilisant une meilleure identification (et en produisant un code auto-documenté), votre extrait se transforme en:
$about_page = get_page_by_title( 'About' );
Un autre cas est lorsque la publication est utilisée comme siteplacein, plutôt que comme contenu spécifique. Par exemple, nous aimerions récupérer la FAQ du site, mais nous ne savons pas (ou ne nous en soucions pas) le nom exact et les détails du contenu.
Mais si nous savons où il se trouve dans la structure du site, nous pouvons utiliser get_page_by_path()
function, très similaire au précédent:
$faq_page = get_page_by_path( 'about/faq' );
Dans les cas plus complexes, les fonctions ne sont pas toujours bien adaptées. Parfois, cela revient à utiliser get_posts()
avec ses riches options de requête, même si ce n’est que pour un seul message.
Cette question va donner des réponses basées sur des opinions, mais bon, je vais essayer.
Il y a plusieurs raisons pour lesquelles quelqu'un aurait pu vous dire cela, ce serait bien de connaître le contexte également.
J'ai construit quelque chose de similaire à cela il y a quelques semaines, j'ai écrit un plugin pour cela. Et dans le thème, je viens d'appeler la fonction du plugin. L'option pour changer l'ID était dans une metabox dans chaque publication, il suffisait à l'utilisateur de cocher une case pour sélectionner l'ID de la publication qu'il souhaitait afficher dans le site principal.
Comme vous pouvez le constater, la plupart des raisons sont liées à la modification de la valeur. Il est également utile de créer un "panneau d'options" approprié, car vous pouvez définir la validation correcte des données en cas d'erreur.
Si vous me donnez plus de contexte, je pourrais peut-être développer ma réponse, j'espère que vous la trouverez utile.