$ post-> IDに間違ったIDが表示される
-
-
その特定のIDを取得しようとしているだけですか、それともIDを処理する_一般的な機能_が必要ですか?最初のケースの場合は、 `get_option( 'page_for_posts');`を使用できます.Are you just trying to get that specific ID, or do you want to have some _general functionality_ dealing with the IDs? If the first is the case, you could use `get_option('page_for_posts');`.
- 1
- 2013-08-08
- tfrommen
-
私はメタボックスの値を取得しようとしていたので、IDを処理する一般的な機能は、とにかく今解決されました.お時間をいただきありがとうございます.I was trying to get metabox value, so general functionality dealing with the IDs, anyways it's resolved now, thanks for your time!
- 0
- 2013-08-08
- Wordpressor
-
これは同様のスレッドです:https://wordpress.stackexchange.com/questions/150192/at-my-posts-archive-page-outside-the-loop-get-the-id-returns-the-top-most-poHere's a similar thread: https://wordpress.stackexchange.com/questions/150192/at-my-posts-archive-page-outside-the-loop-get-the-id-returns-the-top-most-po
- 0
- 2019-03-05
- Pikamander2
-
1 回答
- 投票
-
- 2013-08-08
そのページで$post-> IDは、指定された最初のブログ投稿のIDを返します ページ.
それがその仕組みです.
$post
は、ループの最初の投稿に設定されます.投稿またはページと同じ単一の投稿およびページ.アーカイブページでは、結果セットの最初の投稿です.そして、あなたがそれについて考えるならば、両方とも本当に同じものです.単一の投稿とページのセットには、期待する投稿またはページと一致する結果が1つだけあります.さて、トリッキーな部分ですが、すべてのループからすべてのループを削除しようとしました ページ、完全に消去されたloop.phpファイル、すべてのウィジェットを無効にしました $postに影響を与えている可能性がありますが、それでも間違ったIDが返されます.
メインクエリはテンプレートが読み込まれる前に実行され、そのプロセスで
$post
が設定されます.テンプレートから物を削除しても、それは変わりません.ヒントはありますか?
はい.適切なループ内を除いて、
$post
に依存しないでください.ページ自体に関する情報が必要な場合は、次を使用してください.$pobj = get_queried_object(); var_dump($pobj); // debugging
参照:
http://codex.wordpress.org/Function_Reference/get_queried_object
On that page $post->ID returns the ID of first blog post for given page.
That is how it works.
$post
is set to the first post in the Loop. On single posts and pages that is the same as the post or page. On archive pages it is the first post in the result set. And if you think about that, both are really the same thing. Single posts and pages only have one result in the set which happens to match the post or page that you expect.Now, the tricky part, I've tried to remove all the loops from all my pages, totally erased loop.php file, disabled all the widgets that might have been affecting $post and it still returns the wrong ID.
The main query runs before your template loads and
$post
is set in that process. Removing things from the template won't change that.Any hints?
Yes. Don't rely on
$post
except inside a proper Loop. If you need information about the page itself use:$pobj = get_queried_object(); var_dump($pobj); // debugging
Reference:
http://codex.wordpress.org/Function_Reference/get_queried_object
-
賢い、私はこれまでこの解決策について聞いたことがありません.Clever, I have never heard about this solution before.
- 0
- 2013-08-08
- Wordpressor
これはかなり奇妙です.
このコード:
ブログページ(/wp-admin/options-reading.phpでブログとして設定されているページ)を除いて、毎回正しいIDを表示します.
そのページで$post-> IDは、指定されたページの最初のブログ投稿のIDを返します.
ここで注意が必要なのは、すべてのページからすべてのループを削除しようとしました.loop.phpファイルを完全に消去し、$postに影響を与えている可能性のあるすべてのウィジェットを無効にしましたが、それでも間違ったIDが返されます.
ヒントはありますか?
私のindex.phpはかなり標準的です:
そしてloop.phpは:
問題は、header.phpでIDを取得しようとしていることでしょうか?
はい、
wp_reset_postdata()
も役に立たないようです:/