私は、これを使って自分のホームページにページのコンテンツを取り込んだり、アーカイブから特定のカテゴリを削除したりしているようです。
$post = get_post( 5 );
誰かがこれが悪い習慣であることを提案しました。なぜそれが悪いのですか?
初心者のために、本当に5
とは何かについて調べてみましょう。投稿のIDです。しかし、IDとは何ですか?特定の投稿レコードを識別するMySQLテーブル行の値です。
それで最初にそれに関するいくつかの概念的な問題があります。内容ではありません。ユーザーが作成、操作、または(ほとんどの場合)認識していることではありません。 WPは(設計上)ユーザーにIDを公開することについてはかなり卑劣であり、それをすることはほとんどありません。そのためだけにかなりの数のプラグインが生成されます。
それが満足していない(または価値がある意味がある)という結果として、それは自己文書化されていません。 5
という投稿がスニペットからのものである可能性があると推測する方法はまったくありません。
そして最後に、IDは特定のデータベース内の投稿を一意に識別しますが、コンテンツがデータベース間や異なるシステム間で移動し始めるとすぐにそれを行うことは確実ではありません。
私は、スタンドアロンの投稿を取得して利用する2つの典型的な理由を観察しました。
永続的なコンテンツは通常かなり静的で、ほとんどの場合タイトルで識別できます。例えば5
のようなあなたのスニペットの低IDはしばしば "About"ページのようなものを参照します。
そのようなコンテンツの検索には get_page_by_title()
が適しています。名前にもかかわらず、それは3番目の引数として$post_type
を受け入れて、ページだけでなく働きます。
そのため、より優れた識別情報を使用して(そしてその間に自己文書化コードを作成して)、スニペットは次のようになります。
$about_page = get_page_by_title( 'About' );
別のケースは、投稿が特定のコンテンツではなく、サイト内の場所として使用されている場合です。たとえば、サイトのFAQを取得したいのですが、正確な名前やその他のコンテンツの詳細がわからない(または気にしない)。
しかし、それがサイトの構造のどこにあるかわかっていれば、 get_page_by_path()
関数を使うことができます。
$faq_page = get_page_by_path( 'about/faq' );
より複雑な場合には、必ずしも適切な関数があるとは限りません。 1つの投稿に対してだけであっても、豊富なクエリオプションを使用して get_posts()
を使用することになることがあります。
この質問では、意見に基づいた答えを得ることができますが、試してみます。
誰かがあなたに言ったかもしれない理由がいくつかあります、それは文脈も知っているのは素晴らしいでしょう。
私は数週間前にそれに似たものを作りました、私はそれのためのプラグインを書きました。そしてテーマで私はちょうどプラグインの機能を呼びました。 IDを変更するオプションは各投稿のメタボックスにあり、ユーザーは自分がメインサイトに表示したい投稿のIDを選択するためにチェックボックスをチェックするだけでした。
お分かりのように、理由の大部分は誰が値を変更しなければならないのかに関連しています。また、間違った場合に備えて適切なデータ検証を設定できるため、適切な「オプションパネル」を作成することも便利です。
あなたが私にもっと文脈を与えれば私は私の答えを広げることができるかもしれない、私はあなたがそれが有用であると思うことを望む。