禁止活动日历插件加载其脚本

时间:2014-06-18 作者:br3nt

我刚刚安装了Events Calendar Pro。

我目前正在使用以下自定义模板隐藏任何与插件相关的内容,并显示消息和登录链接:

<?php if (current_user_can(\'read_tribe_event\')): ?>
  <div id="tribe-events-pg-template">
    <?php tribe_events_before_html(); ?>
    <?php tribe_get_view(); ?>
    <?php tribe_events_after_html(); ?>
  </div> <!-- #tribe-events-pg-template -->

<?php else: ?>
  <?php echo get_template_part(\'restricted_access\'); ?>
<?php endif; ?>

<?php get_footer(); ?>
我发现插件的javascript仍在加载中,并引发了一个异常,可能是因为它期望找到的内容已经不存在了。这将阻止另一个插件的javascript工作。

我现在在想,可能有一些钩子可以用来阻止事件日历插件加载它的任何内容,而不是加载我的内容。

有人知道这样做的正确方法吗,或者有其他想法吗?

1 个回复
最合适的回答,由SO网友:br3nt 整理而成

我仅通过使用过滤器成功地为未登录的用户禁用了事件日历插件(见下文)。

这个dequeue_tec_scripts 函数将插件加载的脚本出列。

这个restricted_access_template 函数,将用户重定向到名为“restricted\\u access”的自定义模板。php或404。如果找不到模板文件,则返回php。

我没有尝试禁用任何其他资产,如css。

functions.php:

//
// Hide events from logged out users
//

add_filter(\'template_include\', \'hide_events_for_logged_out_users\', 99);

function hide_events_for_logged_out_users($template ) {
  if (tribe_is_event_query() && (!is_user_logged_in() || !current_user_can(\'read_tribe_event\'))) {
    dequeue_tec_scripts();
    return restricted_access_template();
  }

  return $template;
}

function dequeue_tec_scripts() {
  wp_dequeue_script(\'tribe-events-calendar\');
  wp_dequeue_script(\'tribe-events-calendar-script\');
  wp_dequeue_script(\'tribe-events-bootstrap-datepicker\');
  wp_dequeue_script(\'tribe-events-admin\');
  wp_dequeue_script(\'tribe-events-settings\');
  wp_dequeue_script(\'tribe-events-ecp-plugins\');
  wp_dequeue_script(\'tribe-events-bar\');
  wp_dequeue_script(\'tribe-events-calendar\');
  wp_dequeue_script(\'tribe-events-list\');
  wp_dequeue_script(\'tribe-events-ajax-day\');
  wp_dequeue_script(\'tribe-mini-calendar\');
  wp_dequeue_script(\'tribe-events-pro-slimscroll\');
  wp_dequeue_script(\'tribe-events-pro-week\');
  wp_dequeue_script(\'tribe-events-pro-isotope\');
  wp_dequeue_script(\'tribe-events-pro-photo\');
  wp_dequeue_script(\'tribe-events-pro-geoloc\');
  wp_dequeue_script(\'tribe-meta-box\');
  wp_dequeue_script(\'tribe-jquery-ui\');
  wp_dequeue_script(\'tribe-jquery-ui\');
  wp_dequeue_script(\'tribe-timepicker\');
  wp_dequeue_script(\'tribe-fac\');
  wp_dequeue_script(\'tribe-events-pro\');
}

function restricted_access_template() {
  $template = locate_template(array(\'restricted_access.php\'));
  if ($template != \'\') {
    return $template;
  }
  else {
    global $wp_query;
    $wp_query->set_404();
    status_header(404);
    return get_template_part(404);
  }
}

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register