我刚刚安装了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工作。
我现在在想,可能有一些钩子可以用来阻止事件日历插件加载它的任何内容,而不是加载我的内容。
有人知道这样做的正确方法吗,或者有其他想法吗?
最合适的回答,由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);
}
}