私は、同じサードパーティのPHPライブラリをすべて使用する、オープンソースプラグインとテーマ(「スイート」の一部)のカップルを開発しています。 Wordpressに含めるための最善の方法は何だろうか。ここにいくつかの考えがあります:
wp-content
に入れてくださいそのことについて何か考えはありますか?
各プラグイン/テーマが独自に機能する場合は、おそらくすべてのテーマ/プラグインにライブラリをドロップする必要があります。
それを要求する前に、それがサードパーティのライブラリからのクラスまたは関数が存在するかどうかを確認するだけです。
<?php
if( class_exists( 'SomeClass' ) )
{
// require/include here
}
または
<?php
if( function_exists( 'some_function' ) )
{
// Require/include stuff here
}
あるいは、 プラグイン可能な関数 のように、存在するかどうかを確認するために、サードパーティのライブラリからのすべての関数/クラス/変数/定数をラップすることもできます。
すべてのプラグインとテーマが互いに依存している場合は、それらを分割してもあまり意味がありません。おそらくそれを再考する必要があります。
依存しているすべてのコードをライブラリプラグインのアクションにバインドします。
ライブラリプラグインのサンプルコード:
add_action( 'plugins_loaded', 'load_library', 0 );
function load_library()
{
# load all the classes and files you need
# Set up $plugin_url and $plugin_directory
do_action( 'library_loaded', $plugin_url, $plugin_directory );
}
依存しているコードでは、アクションが呼び出される前に何もしません。
add_action( 'library_loaded', 'start_my_code', 10, 2 );
function start_my_code( $lib_url, $lib_directory )
{
# do stuff
}
ライブラリはすべての基本的な部分を扱います:適切なPHPバージョン、WordPress定数、マルチサイト設定などをチェックします.
アクション'library_loaded'
が呼び出されない場合、他のコードは何もしません。
あなたのライブラリがPHPクラスの形式であるなら、chrisguitarguyによる答えに加えて、それらが別のプラグインによってまだロードされていないなら、あなたはそれらをロードするために spl_autoload_register() を利用できます。その後、ライブラリをプラグインにバンドルして使用し、必要に応じてそれらを含めるようにクラスローダに依存します。クラスローダーを使って自分のプラグインのクラスをロードすることもできます。
例えば.
define('WPSE_31726_PLUGIN_ROOT', dirname(__FILE__) . '/');
/**
* autoload classes as/when needed
* @param string $class_name name of class to attempt to load
*/
function wpse_31726_autoload($class_name) {
static $classMap = array (
'Wpse31726_Admin' => 'class.Wpse31726_Admin.php',
'Wpse31726_CsvLoader' => 'class.Wpse31726_CsvLoader.php',
'Wpse31726_Plugin' => 'class.Wpse31726_Plugin.php',
'parseCSV' => 'lib/parsecsv/parsecsv.lib.php',
);
if (isset($classMap[$class_name])) {
require WPSE_31726_PLUGIN_ROOT . $classMap[$class_name];
}
}
// register function for autoloading required classes
spl_autoload_register('wpse_31726_autoload');
公式のベンダのディレクトリは存在しません 、私はライブラリを含むこと以外何もしない "コア"プラグインを探します。それからあなたはあなたのプラグインにそのコアプラグインを要求させるようにします。
あなたの本当のプラグインの1つにライブラリを置くことは、たとえ彼らがその機能を使いたくないかもしれないとしても、そのプラグインを有効にすることをユーザーに要求するでしょう。別のコアプラグインがきれいに見えます。
それを直接wp-contentに入れることは最悪の解決策のように見えます。