Отключите плагин Календаря событий от загрузки его скриптов


Я только что установил Календарь событий 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 другого плагина.

Я есть теперь я думаю, что, возможно, есть какой-то крючок, который я могу использовать, чтобы запретить плагину Календаря событий загружать любой его контент и вместо этого загружать мой контент.

Кто-нибудь знает правильный способ сделать это или у вас есть какие-либо другие идеи?

Author: br3nt, 2014-06-18

1 answers

Мне удалось успешно отключить плагин Календаря событий для пользователей, которые не вошли в систему, используя только фильтры (см. Ниже).

Функция dequeue_tec_scripts выводит из очереди сценарии, загруженные плагином.

Функция restricted_access_template перенаправляет пользователя на пользовательский шаблон с именем 'restricted_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);
  }
}
 2
Author: br3nt, 2014-06-20 05:56:22