web-dev-qa-db-fra.com

Désactiver le plug-in du calendrier des événements en chargeant ses scripts

Je viens d'installer The Events Calendar Pro.

J'utilise actuellement le modèle personnalisé suivant pour masquer tout contenu lié au plug-in et afficher un message et un lien de connexion à la place:

<?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(); ?>

Ce que je constate, c’est que le javascript du plugin est toujours en cours de chargement et génère une exception, probablement parce que le contenu qu’il s’attend à trouver n’y figure plus. Cela empêche le javascript d'un autre plugin de fonctionner.

Je pense maintenant que je peux utiliser un crochet pour empêcher le plug-in de The Events Calendar de charger tout son contenu et de charger mon contenu à la place.

Est-ce que quelqu'un sait comment faire ou a d'autres idées?

1
br3nt

J'ai réussi à désactiver le plug-in du calendrier des événements pour les utilisateurs qui ne sont pas connectés en utilisant uniquement des filtres (voir ci-dessous).

La fonction dequeue_tec_scripts élimine les scripts chargés par le plugin.

La fonction restricted_access_template redirige l'utilisateur vers un modèle personnalisé nommé "restricted_access.php" ou "404.php" si le fichier de modèle n'est pas trouvé.

Je n'ai pas pris la peine d'essayer de désactiver d'autres actifs tels que 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
br3nt