web-dev-qa-db-ja.com

Index.phpからプラグイン関数を呼び出す方法

私のプラグインmypluginfooという名前で関数を作成しました。フロントエンドから呼び出すにはどうすればいいですか?

 e.g. index.php?
7
Yoga

他の人と同じように、

foo();

アクティブプラグインはテーマファイルの前にロードされます

あなたがあなたのプラグインが活性化されていることを確認したいかもしれません、そして、あなたがそれを活性化することを忘れるならば物事が梨形にならないように:

if(function_exists('foo')){
    foo();
} else {
    echo "oh dear you haven't activated/installed 'myplugin', go do that before the 'foo' feature is available";
}

また、fooは非常に一般的な関数名です。おそらく "omgfoo"プラグインにもfoo関数があります。だからあなたの関数にユニークな何かを接頭辞/名前空間を付ける

より安全でより良い習慣であるので、あなたは結局アクションとフィルタを使いたいと思うでしょう あなたはここでそれについて読み続けることができます

12
Tom J Nowell

あなたはしません。テーマは非常に制御された環境を除いてプラグインに頼るべきではありません。代わりに アクションとフィルタ を使用してください。

だからあなたのテーマであなたが使うかもしれません:

do_action( 'before_header' );

…または…

$bg_options = array (
    'wp-head-callback' => 't5_custom_background_frontend',
    'default-color'    => 'f0f0f0',
    'default-image'    => '',
);
$bg_options = apply_filters( 't5_theme_bg_options', $bg_options );
add_theme_support( 'custom-background', $bg_options );
add_action( 'login_head', $bg_options['wp-head-callback'] );

プラグインでは、add_action()add_filter()を使用して新しいコンテンツを変更または追加します。このようにして、テーマはプラグインが無効化されていてもfunction_exists()を使う必要がなくても機能します。

5
fuxia

アクティブなプラグインは(技術的には - それらのファイルは含まれるされ、WordPressのロード中にPHPで処理されるように)テーマテンプレートの実行時までにロードされます。

そのため、あなたの関数は利用可能であるべきであり、他の関数として呼び出すことができます。

<?php foo(); ?>

例えば。

2
Rarst