什么时候是wp_loaded
已启动?
我正在尝试添加为插件数据库下载一个大文件的功能,我需要在站点完全加载后,每当用户/管理员/未知用户进入前端时执行该功能,以便不会对站点速度和用户体验造成任何延迟。
我使用以下脚本:
// add update check when admin login
if (is_admin()) {
function wp_plugin_update() {
include( plugin_dir_path( __FILE__ ) . \'wp-plugin-update.php\');
}
add_action( \'admin_init\', \'wp_shabbat_update\' );
}
// add update check when user enter the site after footer loaded
if (!(is_admin() )) {
function wp_plugin_update() {
include( plugin_dir_path( __FILE__ ) . \'wp-plugin-update.php\');
}
add_action( \'wp_loaded\', \'wp_plugin_update\' );
}
我只能使用它,它将与管理员一起工作,并且当用户进入网站时?:
function wp_plugin_update() {
include( plugin_dir_path( __FILE__ ) . \'wp-plugin-update.php\');
}
add_action( \'wp_loaded\', \'wp_plugin_update\' );
最合适的回答,由SO网友:jgraup 整理而成
wp_loaded
为站点的前端和管理部分激发。
一旦WordPress、所有插件和主题完全加载并实例化,就会触发此操作挂钩。
既然您正在检查插件更新,那么最好admin_init
而不是wp_loaded
-- 假设你想知道user
已登录并查看admin 场地的剖面图。
function wpse_20160114_admin_init_update_plugin() {
// don\'t run on ajax calls
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
return;
}
// only administrators can trigger this event
if(is_user_logged_in() && current_user_can(\'manage_options\'))
{
@include(plugin_dir_path(__FILE__) . \'wp-plugin-update.php\');
}
}
add_action(\'admin_init\', \'wpse_20160114_admin_init_update_plugin\');
如果要在前端为所有用户运行
function wpse_20160114_update_plugin() {
// don\'t run on ajax calls
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
return;
}
// only run on front-end
if( is_admin() ) {
return;
}
include(plugin_dir_path(__FILE__) . \'wp-plugin-update.php\');
}
add_action(\'wp_loaded\', \'wpse_20160114_update_plugin\');
就我的测试而言,
wp_loaded
之后发生火灾
init
但之前
admin_init
.
前端
[ul>
[init
][widgets_init
][wp_loaded
]管理[ul>
[init
][widgets_init
][wp_loaded
] [admin_menu
][admin_init
]
SO网友:Pieter Goosen
wp_loaded
运行前端和后端,而不考虑用户和页面。每当请求页面时wp_loaded
将运行。
通常,在wp_loaded
执行,Wordpress加载完毕,它也是Wordpress完全加载后可用的第一个挂钩。用户已通过验证/身份验证(用户已在上通过身份验证init
, 此时,前端和后端都会发生这种情况,因此数据已经可用。
你应该看看action hook execution sequence 对于前端和后端操作,确定哪个钩子最适合您需要运行的特定应用程序。请注意,某些操作如init
和wp_loaded
在前端和后端执行,因此您需要执行is_admin()
根据您的需要,检查以专门针对前端或后端。
很抱歉,我不能说得更具体,但您的问题缺乏非常具体的信息,但一般来说,您会执行以下操作wp_loaded
仅在前端
add_action( \'wp_loaded\', function ()
{
if ( !is_admin() ) { // Only target the front end
// Do what you need to do
}
});