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


11

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

問題はここにあります:

任意のテーマでfunctions.phpファイルを変更する場合、2つの変更に注意する必要があります。最初に、そのテーマの更新に注意する必要があります。次に、サイトのテーマを変更する必要があります。

では、テーマのfunctions.phpを変更する代わりに、テーマに依存しないいくつかのfunctions.phpファイルを変更することは可能ですか?


4
賞金は本当に必要ですか?質問にはすでに良い回答があります
onetrickpony

@Mohit Bumbがa)報奨金を提供し、b)プラグインの使用を最初に提案した人であるため、私は彼が担当者ポイントを獲得した人であると思います(戻る)。IMOバウンティは必要ありませんでした(そして、彼が実際にそれを与える必要があることを彼は知らなかったと思います)。
カイザー、

回答:


15

テーマコードと非テーマコードの違いは、技術的なものではなく組織的なものです。アクティブなコードは、それがどこから読み込まれるかは関係ありません。

WordPressコアの一部ではない、コードが読み込まれる場所はいくつかあります。

  • wp-config.php 設定ファイル
  • アクティブなテーマ(およびその子テーマの親)
  • アクティブなプラグイン
  • プラグインを使用する必要があります
  • ドロップイン(これらはいくぶん高度であり、非常に特定の目的を果たします)

テーマの一部ではない独自のコードの一般的な場所は、プラグインを作成することです。他のアプローチには一般的なケースからのメリットはありませんが、通常のプラグインの便利なインターフェース(管理領域で管理)と技術(アクティベーション/非アクティベーション/アンインストールイベント)の利便性はありません。


あなたと@kaiserの両方に+1します。正しい答えは1)でカスタム機能を格納する子テーマを作成するfunctions.php、または2)その機能を格納するカスタムプラグインを作成して、さまざまなテーマ間で移植できるようにすることです。
チップベネット

@Chipの質問では、テーマを切り替えるときにコードを保持することについて尋ねられるので、子テーマが適切とは見なされません。子テーマであるテーマに切り替えたい場合はどうなりますか?プラグインは、特定の要件に最も適しています。
Rarst

だから私はあなたの両方に賛成票を投じました。:)しかし、あなたはできるまだテーマを切り替えたときに子テーマを使用します。Template:子テーマでタグを適切に変更するだけstyle.cssです。
チップベネット

@Chipあなたは私のポイントを獲得しませんでした。子テーマを使用したい場合はどうなりますか?私のコードでTwenty Elevenの子テーマを作成します。次に、Twenty Eleven(または他の親)の子テーマでもあるテーマに切り替えたいと思います。2つの子テーマを手動でマージする以外に、私には道がありません。次に、テーマを変更するときにマージを解除します。それは混乱です。
Rarst

これにはマストユースを使います。私はそれが、テーマ間で使用できる関数、フック、およびショートコードを追加するための迅速で簡単な方法であることに気づきました
chiliNUT

6

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

functions.phpではなく新しいページにその関数を追加し、たとえばyousitename + timestampなどの一意の名前を付けますが、同じ名前の一意の作成フォルダーを圧縮してプラグインとしてアップロードすると、無効にするまで確実に機能します。

次のようにそのプラグインに名前を付けるのをお見逃しなく、どのプラグインが何であるかを理解するには:

/*
Plugin Name: XYZ
*/

3

@MBTheDeveloperの回答への追加として。

その他のオプションは次のとおりです。

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

2

テーマのfunctions.phpファイルでサイト固有の変更を行わないでください。

代わりに、サイト固有のプラグインを作成します。「ottopress.com」のようなサイトのドメイン名を使用したい。次に、スニペットをそのプラグインに挿入し、そのサイトでのみアクティブのままにします。

または、関連する変更のスニペットがある場合は、それらだけの特定のプラグインを作成します。これにより、必要に応じてコードの関連ビットをオン/オフにするオプションが提供されます。


2

いくつかの説明

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

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

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

一般的に、functions.phpに含めるコードのタイプ:

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

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

ソリューション

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

なぜプラグインファイルですか?単一のプラグインファイルではありません。

コードに関連する関連サイトの機能を個別のプラグインファイルにグループ化し、すべてのプラグインファイルにプラグインヘッダーを追加して、Wordpressによって個別のプラグインとして認識されるようにすることを忘れないでください。その後、すべてを壊すことなく、サイトのさまざまな機能をアクティブ化/非アクティブ化することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.