1
我的問題基本上是:「後端」插件是什麼都不影響博客前端的,當匿名用戶加載時,例如瀏覽我的博客?是否在前端加載了WordPress管理插件?
比方說,EWWW圖像optmizer:它只是優化圖像,在後端。它有一個管理界面來優化圖像,但最終用戶根本不使用它。仍然會在每次訪問頁面時加載?
我不確定自己是否清楚自己。希望如此。
我的問題基本上是:「後端」插件是什麼都不影響博客前端的,當匿名用戶加載時,例如瀏覽我的博客?是否在前端加載了WordPress管理插件?
比方說,EWWW圖像optmizer:它只是優化圖像,在後端。它有一個管理界面來優化圖像,但最終用戶根本不使用它。仍然會在每次訪問頁面時加載?
我不確定自己是否清楚自己。希望如此。
據我所知,沒有辦法只在WordPress API中指定一個插件作爲管理員。我知道的唯一插件類型是「必須使用」,「網絡激活」(對於多用戶網站)和「主動」,所以我認爲管理插件也將以非管理模式加載。這些插件在wp-settings.php中加載。我讀了代碼,就我看來,就插件加載而言,WordPress不區分管理模式和非管理模式。相關的代碼是:
// Load must-use plugins.
foreach (wp_get_mu_plugins() as $mu_plugin) {
include_once($mu_plugin);
}
unset($mu_plugin);
// Load network activated plugins.
if (is_multisite()) {
foreach (wp_get_active_network_plugins() as $network_plugin) {
wp_register_plugin_realpath($network_plugin);
include_once($network_plugin);
}
unset($network_plugin);
}
...
// Load active plugins.
foreach (wp_get_active_and_valid_plugins() as $plugin) {
wp_register_plugin_realpath($plugin);
include_once($plugin);
}
unset($plugin);
function wp_get_mu_plugins() {
$mu_plugins = array();
if (!is_dir(WPMU_PLUGIN_DIR))
return $mu_plugins;
if (! $dh = opendir(WPMU_PLUGIN_DIR))
return $mu_plugins;
while (($plugin = readdir($dh)) !== false) {
if (substr($plugin, -4) == '.php')
$mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin;
}
closedir($dh);
sort($mu_plugins);
return $mu_plugins;
}
function wp_get_active_network_plugins() {
$active_plugins = (array) get_site_option('active_sitewide_plugins', array());
if (empty($active_plugins))
return array();
$plugins = array();
$active_plugins = array_keys($active_plugins);
sort($active_plugins);
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
)
$plugins[] = WP_PLUGIN_DIR . '/' . $plugin;
}
return $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.0');
array_unshift($plugins, ABSPATH . 'my-hacks.php');
}
if (empty($active_plugins) || 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;
}
當然肯定知道最簡單的方法是在與犯罪嫌疑人的插件WordPress安裝加載前端頁面,並使用調試器來檢查是否能將其裝入。
而且,如果一個插件的目的是爲管理員只使用插件作者可以只是
if (! is_admin()) {
return;
}
在主插件文件的開始。所以插件基本上不加載。
據我所知,管理員插件專門用於Admin Dashboard等管理員用途,並且與前端無關,所以大多數情況下它不會像您的博客一樣在前端加載。除非它與前端有關:) – Manjunath