插件的目录必须如何构建?

时间:2012-06-19 作者:Cheeso

我得到了基本的插件概念。我读过《法典》关于Writing a Plugin

那篇文章讨论了“主插件文件”。

Wordpress如何确定“主插件文件”?

Q1:
具有如下结构的插件是否合法/受支持:

pluginname/main文件。php插件名称/支持代码-1。php插件名称/支持代码-2。php插件名称/自述。txt等?

Q2:<如果是,wordpress如何确定哪个php文件是主插件文件?

我看到过这样的建议:“我以这种方式构建代码”:

pluginname/main文件。php插件名称/公司/支持代码-1。php插件名称/公司/支持代码-2。php插件名称/自述。txt等Q3:
是使用子目录(如inc/ 在上面的示例中)PHP代码跨越多个模块时的需求?

Q4:
主插件目录中最多应该有一个php文件,这是真的吗?

谢谢

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

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
 */
问题1:拥有这样的插件是否合法/受支持:

是的每个目录结构(只要服务器支持)都是合法的。

问题2:如果是这样,wordpress如何确定哪个php文件是主插件文件?

见上文↑

问题3:当PHP代码跨越多个模块时,是否需要使用子目录(如上例中的inc/)?

要求不,读起来更好:是的。易于维护:也是。

问题4:主插件目录中最多应该有一个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.phpsettings_extended.class.php
  • my_class_prefix_settingsmy_class_prefix_settings_extended
我还做一些基本的目录组织,比如存储所有js/css/img 名为这样的目录中的文件。

有些人使用(对于较大的插件)名为inc/includes/assets/extensions/lib/etc.. 我建议只对大型插件使用子文件夹。如果你有额外的东西,比如小部件等,那么你可以为它们使用特定的子文件夹。

Last word: 不,你发现的都不是真的,那些(就像我给你看的东西)只是建议。