正しい方法でカスタムブログページテンプレートを作成する


8

ブログ投稿を表示するための新しいカスタムページテンプレートを作成したい。[設定]> [読み取り]で投稿を表示するページを割り当てると、home.phpがそのページコンテンツを表示するように割り当てられます。また、ページ編集ビューでページテンプレートを割り当てるオプションが表示されなくなります。

現在、デフォルトの記事が記事ごとに表示されます。管理者が別のテンプレートを選択して、ブログを格子状または組積造のレイアウトにすることができる別のオプションを提供したいと思います。これを行う方法がわかりません。

私はでそれを行うことができない割り当てることで、表示のブログへのページ>設定を読み込む管理エリアをして、管理ユーザーが使用してページに特定のテンプレートを割り当てることができる属性ページにページ編集にメニューをが、応じhttps://make.wordpress.org / themes / 2014/06/28 / correct-handling-of-static-front-page-and-custom-blog-posts-index-template /これは間違った方法です。

私は解決策をグーグル検索してみましたが、私が見つけ続けるのはプラグインを使用するための推奨事項だけです。誰かが私にいくつかの役立つリソースを教えてもらえますか?


元の問題は今解決されてからかなり長いと思いますが、プラグインのソースコードを読むことで多くのことを学んだと言いたかっただけです。WP.orgディレクトリでプラグインが見つかった場合は、[開発者]タブをクリックしてブラウザーから直接コードを表示し、その方法を確認できます。
rtpHarry

回答:


8

Wordpressは主にブログCMSとして設計されたことを忘れないでください。そのため、テーマ開発に関しては、開発者は多くの場合、より多くの機能の可能性と引き換えに非標準的なアプローチを選択します。

テーマ開発者は、これにアプローチするときに3つのオプションを使用できます。

  1. を直接編集しindex.phpてブログのインデックスを変更します。index.phpテンプレートの別の部分が欠落している場合のフォールバックになるはずなので、これは良いオプションではありません。

    • 長所:高速かつ簡単
    • 短所:エラーが発生しやすく、オブジェクト指向の原則に反する
  2. ブログインデックスのページテンプレートを作成します。あなたが言ったように、多くのテーマ開発者はこの方法を選択します。これは、ブログインデックスをすばやく制御できる方法であり、実際にはさまざまなブログインデックステンプレートを操作できるためです(これは、多目的なテーマを開発するときに役立ちます) )。

    • 長所:汎用性が高く、堅牢なテーマを構築できます
    • 短所:ブログのインデックスに関連するWordpressのネイティブ機能を呼び出すことができなくなります。
  3. 作成しfront-page.phphome.phpそしてindex.phpあなたのテーマで。front-pageテーマのホーム・ページになります。homeはデフォルトでブログインデックスになりindex、すべてのテンプレートのフォールバックになります。

    • 長所:Wordpressのネイティブオブジェクトとメソッドをクリーンにして十分に活用する
    • 短所:Wordpressによる制限:今日見られるオプションの豊富なテーマの多くには理想的ではない

個人的には、#2を使うのが好きです。なぜなら、最近の私のWordpress開発プロジェクトのほとんどは、単なるブログではなく、深い情報アーキテクチャと複雑な双方向性を備えたサイト全体だからです。


この機能のためのドキュメント:developer.wordpress.org/themes/basics/template-hierarchy/...
Pixelsmith

0

私の答えのいくつかのベースをカバーするつもりです。:)

独自のテーマを作成していて、一部の種類のページ(カテゴリアーカイブページや単一のブログ投稿ページなど)のデフォルトの表示を変更する場合は、WordPressテンプレート階層の図を確認してください。テーマディレクトリのどのファイルがどのタイプの投稿を表示するために使用されているかを示します。

テーマに、その階層のファイルと一致するphpファイルを含めることにより、WordPressで自動的に使用されます(single.php単一の投稿の表示など)。そのファイルがすでにあるテーマがある場合、明らかにファイルを変更でき、サイトに反映されます。

これとは別に、カスタムページテンプレートが必要で、管理者がそれらを(投稿ごとに)変更できるようにしたい場合は、役割と機能を確認する必要があります。このStackExchangeの回答が役立つ場合があります。(これらのカスタムページテンプレートを作成する必要があります。このSmashing Magazineの記事を参照してください)。

それ以外の場合、管理者が特定の基準に基づいてページ/投稿テンプレートをよりグローバルに選択したり、サイト全体のカスタムページテンプレートを選択したりする場合は、テーマに管理者領域オプションを追加し、一部のカスタムテーマにコードを追加して、そのオプションに基づいて適切なページを表示します。管理領域へのオプションの追加は、多数のプラグインの1つを使用して簡単に実行できますが、手動で実行することもできます(たとえば、SitePointに関するこの記事を参照してください)。


1
ご回答有難うございます。履歴に基づいてページ/投稿のページテンプレートを作成する方法を知っていますが、home.phpを使用している「ブログ投稿インデックスページ」のテンプレートオプションを指定する方法がわかりません(図と同じ用語を使用)あなたが提供した)。これは、管理者ユーザーが[ダッシュボード]> [設定]> [閲覧]に投稿を表示するページを選択すると設定されます。次に、home.php / index.phpページを割り当てます。[ダッシュボード]> [設定]> [読み取り]でページを割り当てない限り、代替テンプレートを作成する方法を理解できません。
Ryan Coolwebs 2017年

@RyanCoolwebsおそらく、ブログ投稿のインデックスページの表示スタイルを選択できる管理オプションをテーマに追加し、home.phpを編集してオプションの値を読み取り、適切なページのバリエーションを表示する必要があります。
イグアナラマ2017年

はい、カスタマイザー機能を使用するのがおそらくこれを実際に行う最良の方法だと思います。カスタマイザーオプションを確認して、適切なテンプレートパーツを取得できます。
Ryan Coolwebs 2017年

0

ブログの投稿を表示するための独自のテンプレートページを作成したいということですか?

次に、この方法でphpファイルを作成します blog-template.php

そのファイル内で、このコードをすべての上に配置します。

<?php 
/*
* Template Name: Blog Post
*/
?>

次に、上記のコードの下で、すべてのコードをindex.php/home.phpページからこの上のページに配置し、ファイルを保存して、からページを作成しますdashboard。たとえば、そのページの名前は、テンプレートのドロップダウンから作成"Blog"した右側から。chose page templateBlog Post

ページを公開したら、投稿を表示するための独自のページを用意してください。

他に必要なことがあればお知らせください。


OK、それであなたはOPが明らかに間違っていると述べたソリューションを再構成しました;)ページテンプレートを作成し、それをブログインデックスとして使用することは最良のアプローチではないと思います。
KrzysiekDróżdż

それ自体は実際に間違っているわけではなく、OPが人々がこのように行う傾向がある理由を誤解しているだけです
Orun
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.