web-dev-qa-db-ja.com

テーマのfunctions.phpファイルでプラグインが実行される前に関数を宣言

私はこのフォーマットを使って関数を宣言するプラグインを使っています。

if (!function_exists('ABdevDND_get_current_post_type')){
    function ABdevDND_get_current_post_type() {
       ...
    }
}

私はそれを私のテーマのfunctions.phpファイルで宣言しようとしています。

function ABdevDND_get_current_post_type() {
    ...
}

しかし、私のタイミングは間違っています、そして私はFatal error: Cannot redeclare ABdevDND_get_current_post_type()を得ています。

どのようにそしてどこで私はこの関数を宣言することができますので、それはプラグインの前に宣言されますか?

3

テーマは after pluginsの中にロードされているので、テーマ内でそれを行うことはできません。

通常のプラグインより早くロードされるので、確かにカスタムプラグイン、たぶんmuプラグインを使用してください。

3
fuxia

これとは逆に、私は最近、プラグインの起動時にプラグイン機能をオーバーライドするというテーマの問題を抱えていました。テーマコードは、致命的なエラーをバッファリングするためにプラグインがアクティブ化される前にロードされます。アクティベーション後も一連のアクションがまだ正常に機能している場合でも、以前に宣言されたエラーが表示されます。これを使用して、プラグインページの関数オーバーライドを無効にすることができます。プラグインページでは、おそらく必要になることはほとんどありません。

WordPressがplugins_loadedの前にプラグインのアクティブ化を試みるのは素晴らしいことですが、それはここでは当てはまりません。

global $pagenow;
if ( $pagenow !== 'plugins.php' )
{
    //declare your function here
}
1
Brian Fegter