web-dev-qa-db-ja.com

私の投稿のアーカイブページでは、ループの外側で、get_the_id()が一番上の投稿のIDを返します。

投稿のアーカイブページのIDを取得しようとしています。管理者から投稿ページとして設定されているため、すでにデフォルトのクエリが設定されています。私が使っているテンプレートはindex.phpです、page-blog.phpを使ってみましたが、私はそのページを投稿アーカイブとして設定していたので代わりにindex.phpを使いました(これは捨てられたようです)。

echo get_the_id()は、ページIDの代わりに私の一番上のブログ投稿のID(この場合はスティッキー)を返します。私はループの外にいます。

ここでも同様の質問があります。 投稿/ブログページのID ですが、目的は多少異なり、代わりに投稿アーカイブを取得するためにget_option('page_for_posts')を使用するという解決策があります。 ID、私が投稿アーカイブページにいるかどうかを検出する方法が必要です。

私が使ってみました:

if (is_page('blog')){ $current_id = get_option('page_for_posts')

しかし、これはうまくいきませんでした。グローバルな$postオブジェクトは私のアーカイブページではなく私のスティッキーポストを参照しているようです。

私が見つけた答えは回避策のようですが、$post screwupである根本的な問題に対処していません。足りないものはありますか、それとも別の方法で対処する必要がありますか。私は自分の投稿アーカイブページを私のホームページではないことが明示的に必要です。

2

理解した。投稿アーカイブページかどうかを検出するにはis_home()を使います。私はいつもその機能はそれがホームページであるかどうかを判断することだと思っていたので、直感に反するようなものです。そのためのis_front_page()があることがわかりました。

4