正如@toscho在评论中提到的,你最好的选择可能是autoloader 某种程度上。。。
foreach ( glob( plugin_dir_path( __FILE__ ) . "subfolder/*.php" ) as $file ) {
include_once $file;
}
有一些插件
do this kind of thing 或者可能是这样的
code snippets, 但我将在下面添加一些示例。。。
插件中独立文件中的基本功能示例:
此示例允许您使用主题支持轻松添加和删除功能。所以基本上在你的
functions.php
你可以这样。。。。
add_theme_support( feature-one );
add_theme_support( feature-two );
add_theme_support( feature-three );
Create a basic plugin with the following structure:
plugin-name/
├── plugin-name.php
├── features/feature-one.php
├── features/feature-two.php
├── features/feature-three.php
└── features/feature-four.php
Inside plugin-name.php include this code:
<?php
/*
Plugin Name: My Themename Addons
Plugin URI: https://example.com/
Description: Add Themename support
Version: 1.0.0
Author: bryanwillis
Author URI: https://github.com/bryanwillis/
License: MIT License
License URI: http://opensource.org/licenses/MIT
*/
function mytheme_autoload_files() {
global $_wp_theme_features;
foreach (glob(__DIR__ . \'/theme-support/*.php\') as $file) {
$feature = \'mytheme-\' . basename($file, \'.php\');
if (isset($_wp_theme_features[$feature])) {
require_once $file;
}
}
}
add_action(\'after_setup_theme\', \'mytheme_autoload_files\', 100);
第二个示例,功能位于单独的文件夹中(如整个插件):此示例没有动态删除功能的选项,但它会自动加载所有内容。。。
在主题中添加一个名为theme-plugins
.创建一个名为autoloader.php
在主题插件文件夹中包含以下代码,并在函数中使用include/require/etc。php来包含它(您也可以将其作为自己的插件)将插件放入theme-plugins
要自动加载它们的文件夹(插件必须与文件名具有相同的文件夹名。Folder structure:
themename/
└── theme-plugins/
├── autoloader.php
├── plugin-one/plugin-one.php
├── plugin-two/plugin-two.php
├── plugin-three/plugin-three.php
└── plugin-foo/plugin-foo.php
Code for autoloader.php
:
<?php
/**
* Autoloader - theme-plugins/autoloader.php
*/
function themename_plugins_autoloader() {
$plugins_dirs = = array_filter( scandir() );
$non_dirs = array(
\'.\',
\'..\',
\'.DS_Store\',
);
for( $i = 0; $i < count( $non_dirs ); $i++ ) {
$not_dir_key = array_search( $non_dirs[ $i ], $$autoload_plugin_dirs );
if( $not_dir_key !== false ) {
unset( $$autoload_plugin_dirs[ $not_dir_key ] );
}
unset( $not_dir_key );
}
unset( $non_dirs );
if( empty( $$autoload_plugin_dirs ) ) {
return;
}
sort( $$autoload_plugin_dirs );
foreach( $$autoload_plugin_dirs as $dir ) {
$plugin_dir = plugin_dir_path( __FILE__ ) . $dir;
$plugin_file = trailingslashit( $plugin_dir ) . $dir . \'.php\';
if( is_dir( $plugin_dir ) && file_exists( $plugin_file ) ) {
require_once( $plugin_file );
}
unset( $plugin_file, $plugin_dir );
}
}
themename_plugins_autoloader();