web-dev-qa-db-ja.com

整理する方法 PHP 複数の種類のページに使用できるファイル

私はWordPressの開発に慣れていません(Webデザイン/開発の面でこれまで行ったことのほとんどは基本的なHTMLサイトの作成です)。だからこれは非常に単純な質問かもしれませんが、私は複数ページのサイトを作成しようとしています。

私は3つの静的ページ、Homepage、Aboutページ、Portfolioページ、そしてWordPressバックエンドを使って作成されたBlogが欲しいのです。当初、私はブログを別のサブドメイン(例えばblog.example.com)に置くつもりでしたが、すべてのページのリストに最近の投稿のリストを追加したいので、それらすべてを同じにしておきたいと思います。ドメイン。

ただし、index.phpabout.phpportfolio.php、およびblog.phpをテーマフォルダーに入れた場合、ページをリンクする方法がわかりません。 index.phpは期待どおりに表示されますが、次のようにリンクを作成した場合は機能しません(すべてのhrefは空白文字列です)。

<ul class="nav">
   <li><center><a id="nav_bar" href="<?php get_home_template() ?>">Home</a></center></li>
   <li><center><a id="nav_bar" href="<?php get_query_template('about') ?>">About</a></center></li>
   <li><center><a id="nav_bar" href="<?php get_query_template('portfolio') ?>">Portfolio</a></center></li>
   <li><center><a id="nav_bar" href="<?php get_query_template('blog') ?>">Blog</a></center></li>
</ul>

また、リンクをwp-contentフォルダに移動する場合は、次の構文を使用します。

<a id="nav_bar" href="<?php bloginfo('template_url') ?>/about.php">About</a>

リンクは正しくレンダリングされ、wp-contentフォルダ内のPHPファイルを指しますが、そのページに移動するときにはWordPress関数を呼び出すことができません(つまり、get_header()が見つかりません)。

やりたいことを達成するための最善の方法は何ですか?

1
Thomas Russell

WordPressのテンプレート階層がどのように機能するのかを学ぶ必要があります。

WordPressを学びたい、または現在のWordPressの経験を次のレベルに引き上げたいという個人にとって、WordPressテンプレート階層のさまざまな側面をすべて理解し理解することは非常に重要です。

WordPress Webサイトのコンテンツの統合または整理を計画している場合は、WordPress Webサイトに到着した各訪問者からの要求をWordPress Webサイトがどのように処理し、ナビゲートするかを理解することが重要です。

これは上から下に読むべきリンクのリストです:

  1. テーマ開発
  2. テンプレート階層
  3. 子テーマ
  4. 条件付きタグ
  5. テンプレートへのステップイン
  6. 実行中のループ

あなたの特定の状況に関して今私の.02のために...

WordPressバックエンド管理領域(domain.com/wp-admin/)に静的ペースを作成します。それらにタイトルを付けて、もし必要ならページのURLを変更するために "スラッグ"を修正して、そして何らかのコンテンツを挿入してください。

私の答えで先に投稿されたリンクを通して読んでください。それからここに戻ってきなさい。

ファイルpage.phpを作成し、それを./wp-content/themes/<your-theme/ディレクトリに置きます。これはあなたのウェブサイト上のすべての「静的ページ」のためのあなたのデフォルトテンプレートになります。

特定のページに対して異なる機能やレイアウトが必要な場合は、いくつかの選択肢があります。

オプション#1)各ページごとに個別のファイルを作成します。あなたはpage-<your-page-slug>.phpまたはpage-<your-page-ID>.phpと呼ばれるファイルを作ることによってこれをすることができます。

オプション#2)あなたのpage.phpファイルの中で、それぞれの異なるページに条件付きタグを使う。

例:

if(is_page('about')){// Page with slug of "about".

    // do stuff

} elseif(is_page(28)){// Page with ID of "28".

    // do stuff

} elseif(is_front_page()){// Home page of your website.

    // do stuff

} else{// Any other page.

    // do stuff

}

さて、あなたのリンクをあなたのレイアウトで多少なりともハードコーディングするつもりなら... site_url(); の使用を検討してください。

例:<a href="<?php echo site_url('/about/'); ?>">About</a>

実際のページ情報を使ってそれを行うことができます。

$page = get_post(28);
if($page){
    echo '<a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a>'.PHP_EOL;
}

あなたが本当に空想を得たいのであれば今…あなたは グローバル変数 を使うことができます。 現在の投稿オブジェクトをグローバル化します (現在のページ)。

if(is_page('about')){// Page with slug of "about".

    global $post;

    echo '<h1><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></h1>'.PHP_EOL;

} 

あなたのサイトのあなたの「ブログセクション」を設定するとき、あなたはWordPressバックエンド管理セクションの読み設定をチェックするべきであることもまた注意されるべきです。 WP Admin -> Settings -> Reading

あなたのフロントページと投稿用のページを設定します。投稿のページはあなたのブログが配置される場所です。 index.phpは、ブログ投稿用のデフォルトのテンプレートファイルです。ブログの各分野に異なるテンプレートを設定できます。 home.phpは、「メインブログページ」のデフォルトのテンプレートファイルです。category.phpは、投稿にカテゴリが割り当てられているすべてのブログ投稿です。 tag.phpは、投稿にタグが割り当てられているすべてのブログ投稿です。等...

私はこのトピックに深く入り過ぎることはできません。なぜなら、1つの答えでカバーするには情報が多すぎるからです。これはすべて私の答えの前の方のリンクで説明されています。私はあなたがそれらのリンクを読んで理解すれば、あなたが解決策への道を進んでいることをあなたに保証することができます。

1
Michael Ecklund

あなたのファイルが単純なphpファイル(決してWordPressにフックされていない)であれば、WordPressの機能はそれらのファイルからアクセスできないでしょう。あなたが異なる構造/レイアウトで異なるページを作成したいなら、あなたは最初にあなたのテーマ/子テーマにテンプレートを作成し、管理ダッシュボードから新しいページを追加し、そしてそれらにあなたが作成したテンプレートを割り当てるべきです -

1)テンプレートを作成します - http://codex.wordpress.org/Page_Templates

2)管理ダッシュボードから新しいページを追加します - http://codex.wordpress.org/Pages_Add_New_Screen

3)ページを追加するときに、作成したテンプレートの中からテンプレートを選択します。あなたは彼らを彼らの名前で識別することができるでしょう。

PHPファイルにget_header()、get_footer()を追加した場合は、テンプレートのみを作成しようとしましたが、テンプレートとして正しくロードされていないようです。詳細についてはテンプレート作成リンクを参照してください。注意してください:テンプレートを作成するときに「テンプレート名」を付けることを忘れないでください。既存のテンプレートをテーマに参照してコピーペーストし、ファイル名とテンプレート名を変更し、必要に応じてレイアウトをカスタマイズし、任意のWordPressページに割り当てることもできます。

また、ページの準備ができたら、ダッシュボード自体からナビゲーションメニューにテーマを追加することもできます http://codex.wordpress.org/WordPress_Menu_User_Guide

新しいテンプレートを作成してテーマ内の既存のテンプレートを使用したくない場合は、それらを管理ダッシュボードのページに割り当てることですぐに使用できます。

0
WisdmLabs