web-dev-qa-db-ja.com

カスタム投稿タイプをプラグインとして作成しますか?どうして?

私はプラグインとしてカスタム投稿タイプを作成することを実験してきました(私はこれがさまざまな場所で推奨されるのを見たので)。

しかし、私は質問howについてではなく、むしろなぜについてはプラグインとしてCPTを構築することについて)を持っています。

はい...プラグインとしてCPTを追加することは私のfunctions.php素晴らしいそしてきちんとしておきます。

しかし...

  1. has_archiveを有効にしたとしたら、まだarchive-cpt.phpを作成する必要がありますね。
  2. また、CPTを表示するにはカスタムループを作成する必要があるので、single-cpt.phpを作成する必要があります。
  3. そして、これらのファイルを作成する必要がありますテーマ内、そうですか?

私がこれを正しく理解すれば、

  1. 私がプラグインを無効にした場合:I stillarchive-cpt.phpsingle-cpt.phpページを削除する(あるいは隠すか何かする必要があります).
  2. 私がThemesを切り替えた場合、これら2ページを新しいテーマに追加する必要があります。正しいですか?

私は、CPTをデフォルトのループに追加するという問題にも触れていません(そしてそれはプラグインベースのcptにも影響します)。

それで、なぜCPT plugin?

7
sleeper

toschoの答えはあなたのCPTをプラグインで定義する技術的な理由に関しては正しいです、しかしあなたの質問の多くはテンプレート階層の誤解から生じているように私には思えます。ほとんどではありませんが、これまでに見たテンプレートファイルはすべてオプションです。

基本的なindex.phpテンプレートファイルを除いて、テーマ開発者は特定のテンプレートファイルを実装するかどうかを選択できます。 WordPressが一致する名前のテンプレートファイルを見つけられない場合は、階層内の次のファイル名にスキップします。 WordPressが一致するテンプレートファイルを見つけられない場合は、index.php(テーマのホームページテンプレートファイル)が使用されます。

http://codex.wordpress.org/Template_Hierarchy

WordPressは、特定の特殊化ファイルが存在する場合はそれを使用しますが、特殊化ファイルが存在しない場合は別のファイル(最終的にはindex.php)にフォールバックします。あなたのテーマはあなたのプラグインのCPTを処理したり補うために特別な何かを実装する必要はありません。テーマはcanですがする必要はありませんはしません。

  1. has_archiveを有効にしたとしたら、まだarchive-cpt.phpを作成する必要がありますね。

いいえ、archive.phpが使用され、それが失敗した場合はindex.php

  1. また、CPTを表示するにはカスタムループを作成する必要があるので、single-cpt.phpを作成する必要があります。

繰り返しますが、いいえ。同じ理由。 single.phpが使用され、使用されない場合はindex.php

  1. そして、これらのファイルを作成する必要がありますテーマ内、そうですか?

はい、でもオプションです。あなたはそれらをまったく必要としません。

  1. プラグインを無効にした場合: Istillarchive-cpt.phpページとsingle-cpt.phpページを削除する必要があります。

いいえ、あなたは何もする必要はありません。テンプレートは使用されません。

  1. テーマを切り替えた場合 :私はまだこれら2つのページを新しいテーマに追加する必要があります。右?

違う。テンプレートはオプションです。投稿タイプに合わせてカスタマイズした表示が必要な場合にのみ必要です。

テーマとCPTがあなたの質問がそれを思わせるほど密接に関連していないことをあなたが理解するとき、他の論理のいくつかはもう少し理にかなっているはずです。

4
s_ha_dum

定数SHORTINITTRUE(カスタムAJAXハンドラー、インポーターまたはAPI)に設定されている場合、テーマはロードされません。そのようなカスタム投稿タイプに投稿を追加することはできません。分類学。

テンプレートは、カスタムコンテンツのviewsであり、ロジックを定義したり、依存したりしないでください。

また、テーマの切り替え後、ユーザーは投稿タイプのコンテンツにアクセスして変更できなくなります。これは、登録なしではインターフェースが存在しないためです。

pluginを無効にした後、テーマを変更する必要はありません。テンプレートは使用されなくなりました。

更新:プラグインのもう1つの利点は、プラグインをアクティブ化できることですネットワーク全体。私は Multilingual Press の主な開発者であり、カスタム投稿タイプの投稿を翻訳して接続する機能をユーザーに提供しています。ただし、テーマが常にアクティブであるため、テーマにバインドされている場合、これは機能しませんサイトごとネットワーク全体ではありません。テーマ投稿タイプは翻訳するのが本当に難しいです。

参照: 私のコードを置く場所:plugin or functions.php?

3
fuxia