显然,WordPress知道安装的插件的位置。
与其他CMS软件相比,WordPress插件的位置规范非常宽松。如果我没有弄错的话,插件文件不需要位于标准插件文件夹中,它可以位于插件文件夹的子文件夹中,也可以位于子文件夹中的子文件夹中。甚至可能在同一文件夹中有多个插件,或者在已有插件的文件夹中有另一个插件。
在安装过程中的某个时候,路径必须由WordPress“注册”存储。WordPress在哪里记录这些信息,管理员是否可以轻松访问这些信息?
显然,WordPress知道安装的插件的位置。
与其他CMS软件相比,WordPress插件的位置规范非常宽松。如果我没有弄错的话,插件文件不需要位于标准插件文件夹中,它可以位于插件文件夹的子文件夹中,也可以位于子文件夹中的子文件夹中。甚至可能在同一文件夹中有多个插件,或者在已有插件的文件夹中有另一个插件。
在安装过程中的某个时候,路径必须由WordPress“注册”存储。WordPress在哪里记录这些信息,管理员是否可以轻松访问这些信息?
插件文件不需要位于标准插件文件夹中,这是错误的。此插件文件夹由常量定义WP_PLUGIN_DIR
, 其值为WP_CONTENT_DIR . \'/plugins\'
.如果你打开/wp-includes/load.php
, 您将找到该函数wp_get_active_and_valid_plugins()
, 定义人
function wp_get_active_and_valid_plugins() {
$plugins = array();
$active_plugins = (array) get_option( \'active_plugins\', array() );
// Check for hacks file if the option is enabled
if ( get_option( \'hack_file\' ) && file_exists( ABSPATH . \'my-hacks.php\' ) ) {
_deprecated_file( \'my-hacks.php\', \'1.5\' );
array_unshift( $plugins, ABSPATH . \'my-hacks.php\' );
}
if ( empty( $active_plugins ) || defined( \'WP_INSTALLING\' ) )
return $plugins;
$network_plugins = is_multisite() ? wp_get_active_network_plugins() : false;
foreach ( $active_plugins as $plugin ) {
if ( ! validate_file( $plugin ) // $plugin must validate as file
&& \'.php\' == substr( $plugin, -4 ) // $plugin must end with \'.php\'
&& file_exists( WP_PLUGIN_DIR . \'/\' . $plugin ) // $plugin must exist
// not already included as a network plugin
&& ( ! $network_plugins || ! in_array( WP_PLUGIN_DIR . \'/\' . $plugin, $network_plugins ) )
)
$plugins[] = WP_PLUGIN_DIR . \'/\' . $plugin;
}
return $plugins;
}
从WP\\u PLUGIN\\u DIR定义的默认目录中检索有效和活动插件的数组。下面是代码,如果插件检查安装位置,他可以从中获得列表
function get_mu_plugins() {
$wp_plugins = array();
// Files in wp-content/mu-plugins directory
$plugin_files = array();
if ( ! is_dir( WPMU_PLUGIN_DIR ) )
return $wp_plugins;
if ( $plugins_dir = @ opendir( WPMU_PLUGIN_DIR ) ) {
while ( ( $file = readdir( $plugins_dir ) ) !== false ) {
if ( substr( $file, -4 ) == \'.php\' )
$plugin_files[] = $file;
}
} else {
return $wp_plugins;
}
@closedir( $plugins_dir );
if ( empty($plugin_files) )
return $wp_plugins;
foreach ( $plugin_files as $plugin_file ) {
if ( !is_readable( WPMU_PLUGIN_DIR . "/$plugin_file" ) )
continue;
$plugin_data = get_plugin_data( WPMU_PLUGIN_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it\'ll be cached.
if ( empty ( $plugin_data[\'Name\'] ) )
$plugin_data[\'Name\'] = $plugin_file;
$wp_plugins[ $plugin_file ] = $plugin_data;
}
if ( isset( $wp_plugins[\'index.php\'] ) && filesize( WPMU_PLUGIN_DIR . \'/index.php\') <= 30 ) // silence is golden
unset( $wp_plugins[\'index.php\'] );
uasort( $wp_plugins, \'_sort_uname_callback\' );
return $wp_plugins;
}代码写入wp-admin\\includes\\plugin.php
我试图在表单提交后向用户发送电子邮件,但出现错误Call to undefined function wp_mail() in C:\\xampp\\htdocs\\wordpress\\wp-content\\plugins\\contact form\\contact-form-plugin.php on line 46<我在谷歌上搜索了一下,发现它与add_action( \'plugins_loaded\', \'functionShowForm\' );.我在代码中添加了这一行,但它在主窗