プラグインまたはテーマのfunctions.php
に属するコードの種類を決定するための わかりやすいスキーム はありますか。
そのトピックについては、 are _ { manyケース _、そして多くの 議論 _があります。私は意見ではなく事実に基づいて答えを求めています。
それはこれらの点(そしておそらくそれ以上)をどのように扱うかを説明するべきです:
add_theme_support( 'automatic-feed-links' );
meta
要素のようなSEO関数双方に賛否両論がしばしばあります。私たちの最も人気のある質問 あなたのfunctions.phpファイルのためのコードのベストコレクション は少なくとも議論の余地がある答えとしてたくさんのコードスニペットを得ました。
初心者が理解できる基準、おそらくチェックリストが必要です - 理由があります。
メタサイトのChip Bennettによる関連質問も参照してください。 特に「プラグインなしで」解決策を求める質問
私はこの質問から始めるでしょう: 機能は表示コンテンツの、または生成/管理コンテンツの、サイトの、またはユーザーID)に関連していますか?
機能性 関連性がない 特にコンテンツの表示)に関連するものであれば、プラグインテリトリーの範囲内です。このリストは長いです。
wp_head
の内容を変更する、など)機能 関連している がコンテンツの表示になっている場合、それはテーマに含まれている候補になっています。この時点で、 @ Raf912のテーマ切り替え基準に戻ります) : テーマを切り替えたときに機能を見逃してしまいますか? その質問に対する答えが いいえ の場合、機能はテーマに属します。
add_theme_support()
で実装されたもの(これは明らかなはずです)通常、これらの2つの質問はかなり明確な区別の線を提供します。ただし、例外があります。
たとえば、カスタム投稿タイプは、テンプレート階層が単一投稿タイプ アーカイブインデックスページ および 単一投稿ページ の場合の動作方法を考えると、コンテンツの生成と表示のちょっとユニークな組み合わせです。 CPTのコンテンツ生成の側面は、通常、それらをPlugin Territoryに正当に配置します。ただし、プラグインでは、特定のテーマのデザイン/レイアウト/スタイルに本質的に適合するテンプレートページを定義することはできません(特にCPTが通常のタイトル/コンテンツ/メタ以外に表示される場合、またはカスタム分類に関連付けられている場合)。
長期的に見て、この格差の解決策である私見は、与えられた種類のコンテンツ(不動産リスト、カレンダーイベント、電子商取引商品、書籍/メディアライブラリのエントリなど)のCPTの定義に関する標準的な慣習/合意を得ることです。 。)このようにして、テーマ開発者はテーマテンプレートファイルでそのCPTのデザイン/レイアウト/スタイルを定義する柔軟性を維持しながら、ユーザー生成コンテンツは特定のCPTの標準/規約定義を実装するテーマ間で移植性を保ちます。
同様に、ソーシャルメディアのプロファイルリンクは、現在のテーマではほとんどどこにでもあるが、presentationof content)とは無関係であるため、プラグインテリトリーであると私は通常言う。コアのどこかで定義されていますが、現在のところこれらのリンクを定義するための標準的な/合意された方法はありません。テンプレートに?など.
長期的に見ても、この格差の解決策は、これらのリンクが定義されている場所をコアで定義するか、またはテーマ開発者コミュニティが独自の合意を開発することです。それまでの間、それはそれぞれのテーマの中で定義されたままにしておくこと以外には本当に何もありません。
コードが最適な場所に配置されている簡単なテスト
あなたはその機能性を逃しますか、ブログがきちんと動いていないか、または古いテーマの断片(例えばショートコード)が残っていますか?
はい:プラグインに入れます
いいえ:functions.phpに残してください
例:ショートコードを書く。テーマを切り替えた後、プレーンショートコードはあなたの投稿に残されます。だからそれはより良いプラグインに配置されるでしょう。
最後のコメントを一覧表示する関数を書きます。テーマを切り替えた後は、他のテーマにも同等の機能があるため、すべて問題ありません。
それは本当にコードとそれが何をするのかに依存します。一部のコードはテーマのスタイルまたはコンテンツにのみ影響を与え、その他のコードはブログ投稿を変更します。
この質問に簡単に答えることはできないと思いますが、その決定に役立つフローチャートを作成できると思います。これはそのようなフローチャートの大まかな概要です。提案でコメントする!
ここから テーマVSプラグイン
カスタムテーマコードを子テーマに追加すると、親テーマを更新してもカスタムコードが失われることはありません。
すべてのカスタムコードを含むサイト固有のプラグインを作成することもできます。
コード対プラグインに関しては、プラグインと関数を使用することができますが、ほとんどの場合、手動コーディングは変更が容易なので最良です。 'テーマ開発者です。
function modify_contact_methods($profile_fields) {
// Add new fields
$profile_fields['Twitter'] = 'Twitter Username';
$profile_fields['facebook'] = 'Facebook URL';
$profile_fields['gplus'] = 'Google+ URL';
return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');
http://codex.wordpress.org/Plugin_API/Filter_Reference/user_contactmethods
私はこれが死んだ馬であり、Chipがそれをほぼカバーしていることを知っていますが、少し考えを加えたいと思いました。
あなたが生計を立てているプログラミングをする そしてあなた自身が期限内にワードプレスサイトに取り組んでいるのに気づいたなら、あなたはそれが本当に時間がかかることに気付くでしょう。
多くの場合、特に始めたばかりの人にとっては、必要なものをテーマに追加してそれを完了と呼ぶ方がはるかに速く簡単です。
あなたが準定期的にwordpressに取り組んでいるなら、/ - 真剣に次のことをすることを検討するべきです :
これは、有効化、無効化、バージョンの更新、管理パネルの構築、アンインストールなど、プラグインに関して一般的に必要なことすべてを処理するはずです。
あなたがこれをする時間を作るならば、あなたは見つけるでしょう:
これで物事を適切に構築できます - そして - 将来のプロジェクトをより早く完成させることができます.
これはテーマで一般的に必要とされるすべてを扱うべきです:
それが終わったら、あなたの主要テーマを使用する子テーマスケルトンを構築します。
これら2つのことが完了したら、人々のための新しいサイトを作成することははるかに速くなります。
上記の手順を実行した場合は、以下の作業を行うことができます。
そして、あなたが 上記のすべてを すると、Chipの答えが理想的なだけでなく最適になることがわかります。
簡単な答えはこれです。
コードは特定のテーマに組み込まれた機能のいずれかに依存していますか?もしそうなら、テーマを入れてください。
このコードをサイト間およびテーマ間で転送可能にしますか?もしそうなら、プラグインを入れてください。
答えが上記の両方にノーであれば、それからそれが再設計のための時間であるときに、5年後のサイトを描きます。あなたが書いているコードの機能は、次回のデザインアップデートで生き残るものでしょうか。もしそうなら、プラグインを入れてください。
また、あなたが子供のテーマを使用していなくて、あなたがテーマを更新することを計画しているならば、私はあなたがプラグインを使うことも提案するでしょう。