我们在单个服务器上托管多个网站,我想在其中将所有网站插件加载到外部PHP文件中。我正在从主机配置文件中读取所有网站网址和托管目录路径。并在运行PHP foreach
的地方传递每个网站的require(wp-load.php),但它仅加载第一个网站,而插件列表显示的仅适用于第一个网站。我正在从get_plugins()函数中获取插件。
这是用于AWS服务器,并使用PHP,MySql。
class Plugininfo{
function EachSiteData($home_url,$abspath){
if (is_file($abspath."/wordpress/wp-load.php")){
define( 'WP_USE_THEMES', false );
require_once($abspath."/wordpress/wp-load.php"); //Here it load only first website I tried to echo home url but it shows only first websites url.
if ( ! function_exists( 'get_plugins' ) ) {
$pluginfile_path= $abspath.'/wordpress/wp-admin/includes/plugin.php';
require_once $pluginfile_path;
}
$all_plugins=array();
$all_plugins = get_plugins();
foreach($all_plugins as $url => $plugins){
//Code to list all websites // currently its showing for first website
}
} //close function
}//close class
$server; //Is an array where I'm storing website's url in key and host path in value.
foreach ($servers as $key => $value) { //Creating object for each website
$PlugininfoObject= new Plugininfo();
$eachsite_data=$PlugininfoObject->EachSiteData($key,$value);
$PlugininfoObject->DatabaseOperations($eachsite_data[0],$eachsite_data[1]);
$PlugininfoObject->destroy();
unset($PlugininfoObject);
}
//问题是它仅加载了最后一个foreach循环中没有的第一个网站。
预期结果:它将加载所有wordpress并提供所有网站插件列表及其状态。所有网站仅在单个服务器上。