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