Answers:
完全禁用插件意味着您失去了很多优势。
Wordpress的分布范围更广,可以撕掉帖子和链接等,但是它们总是落后于WordPress核心,而且往往无法生存很长时间。
这是可以做的一些事情
短初始化
将其放在您的wp-config.php中:
define( 'SHORTINIT', TRUE );
或在加载wordpress之前在某处定义它,应减少加载过程并将其拉回到最小的核心功能。
次要轻量级安装
设置第二个wordpress安装,仅包含所需的插件和主题(如果有)。然后将wp-config.php配置为使用相同的wp-content目录和数据库值。
反压
WordPress,原始的BBpress和glotpress等都是围绕BackPress库构建的。尽管可能缺少许多API和功能或需要重新实现/移植,但您可以使用它代替WordPress来完成工作。
选项表
我还要记住,WordPress将整个选项表加载到内存中以减少查询,如果您在其中保存任何大值,则会影响性能。
提早退出
您也可以尝试在WordPress加载过程中加入早期功能,并在WordPress完成之前退出PHP过程,但是我不能建议这样做的安全性。
选择性加载插件
还有关于选择性加载插件的文章,但确实需要对wordpress核心文件进行破解
使用BackPress,但是我的发展很小,在这里我使用默认安装,并通过const使用较小的源。
看到 wp-settings.php
// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
return false;
在中将const SHORTINIT设置为true wp-config.php
并查看快速运行。
define( 'SHORTINIT', TRUE );
这些是您获得的文件:
// All are located in ABSPATH.WPINC
'/load.php'
'/default-constants.php'
'/version.php'
'/compat.php'
'/functions.php'
'/class-wp.php'
'/class-wp-error.php'
'/plugin.php'
'/default-filters.php'
'/pomo/mo.php'
// Only Multisite
'/ms-blogs.php'
'/ms-settings.php'
对于制作is_user_logged_in()
和current_user_can()
工作,我在这里找到了类似的答案 (不能评论)。
手动使用define('SHORTINIT', true)
+ require('wp-load.php')
+包括:
页面加载量:1.05 sek- 包含的文件:43个文件
比较:仅 使用require('wp-load.php')
:
页面加载量:1.35 sek- 包含的文件:419个文件
时间差异(0.3 sek)可能与安装和PHP引擎不同,但是在一次页面加载中验证许多请求时-事情加起来!/ @ Anna Ericson
对WP安装目录使用相对调用是个好主意。从Wordpress自定义插件“ ROOT”中获取,例如:
$wordpress = '../../../wp-load.php';
然后在我的插件index.php中:
define('SHORTINIT', true);
include_once $wordpress;
require_once ( ABSPATH . WPINC . '/class-wp-user.php' );
require_once ( ABSPATH . WPINC . '/class-wp-roles.php' );
require_once ( ABSPATH . WPINC . '/class-wp-role.php' );
require_once ( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
require_once ( ABSPATH . WPINC . '/formatting.php' );
require_once ( ABSPATH . WPINC . '/capabilities.php' );
//require_once ( ABSPATH . WPINC . '/query.php' ); // - might be useful
require_once ( ABSPATH . WPINC . '/user.php' );
require_once ( ABSPATH . WPINC . '/meta.php' );
wp_cookie_constants();
require_once ( ABSPATH . WPINC . '/vars.php' );
require_once ( ABSPATH . WPINC . '/kses.php' );
require_once ( ABSPATH . WPINC . '/rest-api.php' );
require_once ( ABSPATH . WPINC . '/pluggable.php' );
在此之后,用户验证对我有用。感谢@Anna Ericson来自原始代码的最后几句话:
对于执行一个或两个请求的其他任务,跟踪其他所需文件可能不值得0.3 sek。跳过
SHORTINIT
常数并手动进行处理。
你试过了define('SHORTINIT', true);
吗?我没有亲自测试过它,但是它似乎在保留足够功能的同时加载了WP核心的很少方面,特别是如果您只想处理数据库的话。