WP_LOADED钩子块脚本查询

时间:2020-01-22 作者:sialfa

我有一个由插件为非管理员用户生成的cutsom Maintenance屏幕。如果相关设置页面上的选项已启用,我需要在其上设置倒计时计时器。我已经正确地实现了设置API,我能够保存和检索选中或未选中的复选框选项值和其他内容。我需要一些帮助来将前端样式排队,我需要将后端设置页面输出的一些数据传递给javascript文件,我希望避免内联脚本。我已经尝试使用普通的wp方式加载脚本wp_enqueue_script, 但这行不通,我不知道为什么?我使用以下代码显示维护页面。是否可能wp_loaded 钩子是否会阻止样式和脚本?

public function maintenance_mode()
  {
    global $pagenow;
    if( $pagenow !== \'wp-login.php\' && !current_user_can(\'manage_options\') && !is_admin() ){
      header( $_SERVER[\'SERVER_PROTOCOL\'] . \'503 Service Temporarily Unavailable\', true, 503 );
      header( \'Content-Type: text/html; charset=utf-8\' );
      if( file_exists( plugin_dir_path( __FILE__ ) . \'assets/maintenance.php\' ) ) {
              require_once plugin_dir_path( __FILE__ ) . \'assets/maintenance.php\';
          }
      die();
    }
  }
// the add action is in a separate method
add_action( \'wp_loaded\', array($this, \'maintenance_mode\') );

1 个回复
SO网友:Tom J Nowell

您无法排队,因为wp_loaded 太早了。

要将脚本和样式排队,需要在wp_enqueue_scripts 键入hooks,但因为wp_loaded, 这些钩子还没有开火。

此外,您需要在模板中具有必要的函数调用,以便将它们排入队列,例如wp_headwp_footer, 否则,就没有机会生成脚本和链接标记

因此,您可以选择:

使用比wp_loaded 脚本排队后会发生这种情况,包括手动内联脚本

相关推荐

WordPress-Site可以通过x.x/index.php访问-但不能直接在没有index.php的IP上访问

全新WordPress安装,在RPi 4上安装了Avade主题-在上访问时效果良好http://203.0.113.111/index.php 从外部连接,但如果我删除index.php 我什么都没有得到-连接被拒绝。这是正常行为吗?我不应该立即重定向到WP安装索引页吗?我已经将路由器中的端口80转发到Pi的内部IP,所以我无法理解这一点。我甚至修改了.htaccess 在里面/var/www/html 使用以下行:DirectoryIndex index.html index.php 但是,唉