问题描述
我得到了基本的插件概念。我已经阅读了关于 Writing a Plugin 的法典文章
那篇文章谈到 「主要的插件文件」 。
WordPress 如何确定 「主要的插件文件」?
Q1:是否合法/支持有一个这样的结构的插件:
-
pluginname /
-
pluginname /mainfile.php 中
-
pluginname /supportingcode-1.PHP
-
pluginname /supportingcode-2.PHP
-
pluginname /的 Readme.txt
-
等等..
?
Q2:如果是这样,wordpress 如何确定哪个 php 文件是主要的插件文件?
我已经看到建议说 「我以这种方式构建我的代码」:
-
pluginname /
-
pluginname /mainfile.php 中
-
pluginname /INC /supportingcode-1.PHP
-
pluginname /INC /supportingcode-2.PHP
-
pluginname /的 Readme.txt
-
等等..
Q3:当 PHP 代码跨多个模块时,是否使用子目录 (如上例中的 inc/
)?
Q4:主插件目录中是否应该有最多一个 php 文件?
谢谢。
最佳解决方案
How does WordPress determine “the main plugin file” ?
这是您的插件中包含插件标题注释的文件
/**
* 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: Is it legal / supported to have a plugin that is structured like this:
是。每个目录结构 (只要服务器支持) 是合法的。
Q2: If so, how does wordpress determine which php file is the main plugin file?
见上面↑
Q3: Is the use of a subdirectory (like inc/ in the above example) a requirement when the PHP code spans multiple modules?
需求?不太好看:是的。更容易维护:也可以。
Q4: Is it true that there should be a maximum of ONE php file in the main plugin directory?
不,没有。
总结
您完全组织文件和目录的方式取决于您,您的个人喜好,而无其他事项。如果你想让你更容易维护和其他开发人员逐步执行你的代码,那么你应该使用某种文件/目录组织。
例子
当我上课时,我个人将.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
和settings_extended.class.php
-
my_class_prefix_settings
和my_class_prefix_settings_extended
我也做一些基本的目录组织,比如将所有 js/css/img
文件存储在这样的目录中。
有些人使用名为 inc/includes/assets/extensions/lib/etc.
的大型插件文件夹。我建议仅使用子文件夹进行大型插件。如果你有其他的东西,如小工具等,那么你可以为他们使用特定的子文件夹。
最后一句话:不,没有什么你发现是真的,那些 (像我显示的东西) 只是建议。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。