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


9

我得到了基本的插件概念。我已经阅读了有关编写插件的Codex文章

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

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

问题1:
拥有这样结构的插件是否合法/是否受支持:

  • 插件名称/
  • pluginname / mainfile.php
  • pluginname / supportingcode-1.php
  • pluginname / supportingcode-2.php
  • pluginname / Readme.txt
  • 等等..

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


我看到了一些建议,例如“我以这种方式构造代码”:

  • 插件名称/
  • pluginname / mainfile.php
  • 插件名称/inc/supportingcode-1.php
  • 插件名称/inc/supportingcode-2.php
  • pluginname / Readme.txt
  • 等等..

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

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

谢谢。


当然,您的第一个问题“ WordPress如何确定主要的PHP文件”直接在文件标题
解答

Answers:


12

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 /)?

需求?不,更好阅读:是的。易于维护:也是。

Q4:是的,在主插件目录中最多应该有一个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.。我建议仅将子文件夹用于大型插件。如果您获得了诸如小部件之类的其他东西,那么您可以为它们使用特定的子文件夹。

最后一句话:不,您发现的内容都是真实的,这些(如我向您展示的内容)仅是建议。


1
感谢您的回答。因此,标题注释是wordpress查找“主插件文件”的方式。它只加载一个,对吗?当然还有那个需要或包含的任何其他辅助php文件。正确?我想这在法典中对我来说还不清楚。我只是重新阅读了一下,现在明白了。我希望它会说类似“ Wordpress在您的zip文件中查找具有此特殊标头的文件;它会忽略zip文件中的其他文件”。或类似的规定。还是谢谢你。
Cheeso 2012年

是的,它仅加载您指定的文件以及“主”文件。请注意,有些挂钩具有页面特定的部分,以防止在每个请求上加载所有内容。
kaiser 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.