web-dev-qa-db-ja.com

「最新の投稿」と「静的ページ」の違いは何ですか?

WordPressには、管理パネルの[設定]で[最新の投稿]と[静的ページ]を選択するオプションがあります。私の質問:

  1. これらの各モードでどのページテンプレートが読み込まれますか?
  2. 「静的ページ」を選択するとpagedが動作を停止し、pageが動作を開始する理由-pagedは機能しますが、新しいWPクエリで新しいページテンプレートを作成するとpageは機能しません(これはWPクエリに関するものです-誰もが私が話していることを知っていると思います-ページネーションです)。
  3. カスタムページテンプレートを「静的ページ」として選択するとget_post_meta($post->ID, "my_custom_field_name", true)は機能しなくなりますが、管理パネルの標準の[ページの表示]で使用すると同じことが機能します(global $postを試したことはありません) 、まだ)。
  4. 上記のすべての質問は、これらの各モードで$wp_queryおよび$postの中にあるものに関連していると思います。

これらの2つのオプションが得られないだけです:)詳細を知るために、誰かが私にいくつかのガイダンスやリソースを提供できますか?

2
Paul

コンディショナルタグ

  • Frontページにいる場合、is_front_page()条件タグはtruename__を返します(フォールバックとしてのindex.phpまたはfront-page.php)。
  • Frontページが表示されている場合、no静的ページがフロントページとして設定されている場合、または静的フロントページが表示されてPosts Pageが表示されている場合は、is_home()条件タグはtruename__を返します。 ](フォールバックとしてhome.phpまたはindex.php)。
  • "Settings> Reading"の下にno staticフロントページを設定した場合、home.phpfront-page.phpindex.phpに対してis_front_page()is_home()の両方がtruename__を返します。

オプション

  • 静的なフロントページがある場合、get_option( 'show_on_front' );の値はpagename__になります。
  • FrontページのIDを取得するには、get_page( get_option('page_on_front') )を呼び出します。
  • Frontページへのリンクを取得するには、get_permalink( get_option('page_on_front') )を呼び出します。
  • PostsページのIDを取得するには、get_page( get_option('page_for_posts') )を呼び出します。
  • Postsページへのリンクを取得するには、get_permalink( get_option('page_for_posts') )を呼び出します。
  • 子テーマがある場合、home.phpnotfront-page.phpの代替として機能します。
  • Frontページからカスタム値を取得するには、get_post_custom('page_on_front') )を呼び出します。
  • Postsページからカスタム値を取得するには、get_post_custom('page_for_posts') )を呼び出します。

... AAARGH !! sのリストはどんどん続きます。

特にユーザーがカスタムテンプレートを "静的ページ"に設定しようとすると、ページを使用しない限りページネーションは機能しなくなり、新しいWP Queryを作成しない限りカスタムフィールドは機能しなくなります。

OPのコメントから他の回答へ

この図で を見ることができるように 、何を使うべきかを回避するのはそれほど簡単ではありません。問題は、メインの$wp_queryオブジェクトを傍受する関数、$wp_the_queryオブジェクトの内容をコピーする関数などがあるということです。そして、メインの$wp_queryオブジェクトでしか動作しないものもあります。私はこれがあなたのページ付けの質問に対する完全な答えではないことを知っています、しかしこれもまた質問ではありませんでした。 :)

1
kaiser

その質問に答える前に(今日の時間はまだ足りていません)、トラックチケットをリンクしてみましょう。それは、UI、関数の命名などが非常に疑問視されていることを示しています。

1
kaiser
  1. 基本的に2つのテンプレートを選択します。1つはフロントページ用、もう1つはブログページ用です。あなたの質問からあなたの質問がどれを参照しているのか理解するのはちょっと難しいです...
  2. そこで選択した静的ページに関連付けられているページテンプレート。最新の投稿ページはテンプレート設定を無視し、home.phpまたはindex.phpからのテンプレートの指示を使用します。
  3. ページコンテンツはページングされていないためです。最新の投稿ページはページングされるべきです、少なくとも私のテストインストールではそれはうまく働きます。
  4. 正確なコードを見る必要がありますが、$ postはグローバルなので、コードが関数から実行されていないのでグローバルスコープにアクセスできないと仮定するよりも、常に1として宣言する方が得策です。
  5. 静的ホームページの場合は、独自のURLでページをロードしようとした場合と同じ値が含まれます。最新の投稿では、静的なページ設定をいじる前にホームページを読み込んでいた場合と同じ値を含めるべきです。

ええ、このことを理解するのは複雑です:( codexは実際にここで助けることができます http://codex.wordpress.org/Creating_a_Static_Front_Page

1
Mark Kaplun