web-dev-qa-db-ja.com

任意のテーマで機能するグローバルなfunctions.phpファイルはありますか?

任意のテーマで機能するグローバルな種類のfunctions.phpファイルはありますか?

問題はここにあります:

どのテーマでもfunctions.phpファイルを変更するときには、2つの変更を行う必要があります。まず、そのテーマの更新を確認する必要があります。第二に、私はサイトのテーマを変更するように注意する必要があります。

それで、テーマのfunctions.phpを変更する代わりに、どんなテーマからも独立している一部のfunctions.phpファイルを変更することは可能ですか?

10
Mert Nuhoglu

テーマコードとテーマ以外のコードの違いは、技術的なものではなく組織的なものです。アクティブなコードは、結果として得られる環境に影響します。ロード元の場所は関係ありません。

コードがロードされる場所はたくさんありますが、それらはWordPressコアの一部ではありません。

  • wp-config.php設定ファイル
  • アクティブなテーマ(およびその親が子テーマの場合)
  • アクティブプラグイン
  • プラグインを使わなければならない
  • ドロップイン(これらはやや高度で、非常に具体的な目的に役立ちます)

テーマの一部にすべきではない、あなた自身のコードのための典型的な場所はプラグインを作成することです。他のアプローチは一般的なケースから恩恵を受けませんが、通常のプラグインのインターフェース(管理領域を通して管理する)と技術的(アクティベーション/非アクティブ化/アンインストールイベント)の利便性を失います。

14
Rarst

まあそれは本当の問題であり、彼らがテーマを変えるときそれに直面している多くの人々が、簡単な解決策があります。

その関数をfunctions.phpではなく新しいページに追加して、例えばyousitename + timestampなどの一意の名前を付けます。 。

どのプラグインがそのプラグインに名前をつけるのをお見逃しなくするためのものであるかを理解するためには:

/*
Plugin Name: XYZ
*/
6
Mohit Bumb

@MBTheDeveloper回答に追加として。

他の選択肢は以下の通りです。

  1. 現在のテーマの子テーマを作成し、このテーマのfunctions.phpファイルを使用します(これが「ベストプラクティス」です)。
  2. テーマ関数のphpファイルでincludeを使用して、カスタムコードを含むcustom-function.phpファイルをロードします。
3
kaiser

テーマのfunctions.phpファイルであなたのサイトに特定の変更を加えないでください。

代わりに、サイト固有のプラグインを作成してください。私は "ottopress.com"のようにサイトのドメイン名を使うのが好きです。それからあなたのスニペットをそのプラグインに入れてそのサイトでのみアクティブにしておきます。

あるいは、関連する変更の断片がある場合は、それらだけのために特定のプラグインを作成します。それはあなたに必要に応じてコードの関連ビットをオン/オフにするオプションを与えます。

2
Otto

いくつかの説明

最初にテーマのfunctions.phpの目的を理解する必要があります。 Functions.phpは基本的に、存在する場合はWordpressによって自動的にロードされる任意の名前のないプラグインファイルです。 Wordpressは現在のテーマのfunction.phpをワードプレスのフロントエンドページとバックエンド(admin)ページにロードします。

プラグインには名前があり、他のプラグインやテーマに関係なく有効/無効にできることを除いて、プラグインとfunctions.phpの間に違いはありません。 funtions.phpはあなたの現在のテーマに添付されていて、あなたが別のテーマに切り替えると、Wordpressはあなたの古いfunctions.phpではなく新しいテーマのfunctions.phpをカスタム修正で使用します。

テーマの更新もfunctions.phpを上書きするので、カスタムの変更を別のコードファイルに入れてfucntions.phpに含めたとしても、それを回避する方法はありません。更新ごとにそのインクルード行を追加する必要があります。

通常、functions.phpに入れるべきコードの種類です。

  • テーマのテンプレートファイルで使用されている関数。
  • テーマオプション
  • サイドバー
  • ナビゲーションメニュー
  • 投稿フォーマット
  • サムネイルを投稿
  • 現在のテーマにのみ関連するコード.

あなたがテーマを変えてもあなたのカスタム修正を保持したいので。この場合、テーマを切り替えても、子テーマのfunctions.phpが使用されないため、子テーマは機能しません。

ソリューション

@Ottoが推奨する唯一の解決策はプラグインファイルを作成することです。サイト固有のプラグインを作成するためのアプローチは、サイト名を含むフォルダを 'wp-content/plugins'に作成し、そこにプラグインファイルを作成することです。

なぜプラグインファイル?シングルプラグインファイルではありません。

コードに関連するサイトの機能を別々のプラグインファイルにまとめ、すべてのプラグインファイルに plugin header を追加することを忘れないでください。そうすることで、それらが別々のプラグインとして認識されます。あなたはそれからすべてを壊すことなくあなたのサイトのさまざまな機能を有効化/無効化することができます。

2