web-dev-qa-db-ja.com

プラグインのディレクトリはどのように構成する必要がありますか?

基本的なプラグインの概念がわかります。私は プラグインを書く に関するコーデックスの記事を読みました。

その記事は「メインプラグインファイル」について述べています。

Wordpressはどのように「メインプラグインファイル」を決定しますか?

Q1:
このような構造のプラグインを持つことは合法的/支持的です:

  • プラグイン名/
  • プラグイン名/ mainfile.php
  • プラグイン名/ supportcode-1.php
  • プラグイン名/ supportcode-2.php
  • プラグイン名/ Readme.txt
  • 等..

Q2:
もしそうなら、どのphpファイルがメインプラグインファイルであるかWordpressはどのように判断しますか?


「コードをこのように構成する」という推奨事項を見ました。

  • プラグイン名/
  • プラグイン名/ mainfile.php
  • プラグイン名/ inc/supportcode-1.php
  • プラグイン名/ inc/supportcode-2.php
  • プラグイン名/ Readme.txt
  • 等..

Q3:
PHPコードが複数のモジュールにわたる場合、サブディレクトリの使用(上記の例のinc/のような)は必須ですか?

Q4:
メインプラグインディレクトリに最大1つのphpファイルがあるはずですか?

ありがとう。

9
Cheeso

Wordpressはどのように「メインプラグインファイル」を決定しますか?

プラグインヘッダのコメントが含まれているのは、プラグイン内のファイルです。

/**
 * Plugin Name: A fresh example
 * Plugin URI:  http://example.com
 * Description: Foo makes a bar
 * Version:     2012-06-14.1426
 * Author:      John Doe
 * Author URI:  http://example.com
 * TextDomain:  your_textdomain
 * License:     MIT
 * LicenseURI:  http://www.opensource.org/licenses/mit-license.php
 */

Q1:このような構造のプラグインを持つことは合法的/支持的ですか?

はい。 (サーバーでサポートされている限り)すべてのディレクトリ構造は有効です。

Q2:もしそうなら、どのphpファイルがメインプラグインファイルであるかWordpressはどのように判断しますか?

↑上を見てください

Q3:PHPコードが複数のモジュールにまたがる場合、サブディレクトリ(上の例のinc /のように)を使用する必要はありますか?

要件?いいえ。読みやすく:はい。保守がより簡単:もちろんそうです。

Q4:メインプラグインディレクトリに最大1つのphpファイルがあるべきというのは本当ですか?

いいえ。

要約する

ファイルやディレクトリを完全に整理する方法は、あなた、あなたの個人的な好み、そして他にはありません。あなたが保守しやすくし、他の開発者があなたのコードをステップスルーするのをより簡単にしたいなら、あなたはある種のファイル/ディレクトリ編成を使うべきです。

自分でクラスを取得したとき、私は個人的に.class.phpを拡張子として追加します。私も自分のファイルにクラスとまったく同じ名前を付けています。その理由は簡単です。私の「メインプラグインファイル」 - これは私のbootstrapクラスです。

// inside my PREFIX_bootstrap class:
public static $includes = array(
    'settings'          => false // Parent class - no need to hook
   ,'settings_extended' => true  // Extending class - hooks static init() on `init` hook
);

public function construct()
{
    // The prefix for every class in my plugin
    $prefix = 'my_class_prefix_';

    foreach ( $this->files as $handle => $hook )
    {
        require_once plugin_dir_path( __FILE__ )."{$handle}.class.php";

        if ( ! $hook )
            continue;

        $class = $prefix.$handle;
        class_exists( $class ) AND add_action( 'init', array( $class, 'init' ), 1 );
    }
}

これは私のクラスとファイルが次のように命名されることを意味します:

  • settings.class.php AND settings_extended.class.php
  • my_class_prefix_settings AND my_class_prefix_settings_extended

このような名前のディレクトリにすべてのjs/css/imgファイルを格納するなど、基本的なディレクトリ構成も行います。

一部の人々はinc/includes/assets/extensions/lib/etc.という名前の(より大きいプラグイン用)フォルダを使用します。大きなプラグインにのみサブフォルダを使用することをお勧めします。あなたがウィジェットなどのような追加のものを手に入れたなら、あなたはそれらのために特定のサブフォルダを使うことができます。

最後の言葉:いいえ、見つけたものは何もありません、それら(私のようなもの)あなたに示した)は推奨事項です。

12
kaiser