私はWordpressのテーマを開発していて、新しいメニューの場所(プライマリメニューと呼ばれる)を登録し、それを使ってメニューを使っています。私のメニューでは、 "tier-1 page"というページの下に "tier-2 page"というページがあります。
子ページ( "tier-2 page")にいる間に親ページ( "tier-1 page")のIDを取得したいのですが。 $post->post_parent
、get_post()->post_parent
、get_post_ancestors($post->ID)
を試しましたが、すべて0が返されました。
現時点では、親ページのIDを取得できない理由がわかりません。何か案は?
ありがとうございます。
kraftnerはおそらく正しいですが、グローバル$ postの使用を中止することをお勧めします。私はそれが悪くないことを意味しますが、wpインストールで実行されているほとんどすべてによって修正されることができるこの大きなアレイに関する問題がしばしばあります。
だから私にとってそれは非常に安全ではありません。私はget_queried_object()
を使うことを好みます、そしてそれは全く同じように働きます:
$parent_ID = get_queried_object()->post_parent;
現在のページに従ってデータを取得します。代わりにグローバル$wp_query
を使用します。ここで注意してください。post_parentプロパティを取得しようとしているので、このコードをカテゴリページで実行しないでください。警告が表示されます。