php 事件日历:过滤条:如果未登录使用,强制它们使用过滤条过滤器以查看任何事件中的任何事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 事件日历:过滤条:如果未登录使用,强制它们使用过滤条过滤器以查看任何事件中的任何事件相关的知识,希望对你有一定的参考价值。

<?php

/**
 * The Events Calendar: Filter Bar: If use is not logged in, force them to use
 * a Filter Bar filter in order to see any events in any Events Archive view
 * (e.g. Month, List, Day, etc).
 *
 * @link https://gist.github.com/cliffordp/49d5f296dcae2e6f13773d48d32fd274
 */
add_action( 'tribe_events_pre_get_posts', 'cliff_display_none_unless_filter_bar_in_use' );
function cliff_display_none_unless_filter_bar_in_use( $query ) {
	if ( is_admin() ) {
		return;
	}

	if ( is_user_logged_in() ) {
		return;
	}

	if (
		! class_exists( 'Tribe__Events__Main' )
		|| ! class_exists( 'Tribe__Events__Filterbar__View' )
	) {
		return;
	}

	$archive_slug = Tribe__Events__Main::instance()->rewriteSlug;

	if (
		// if "events" does not match "/events", which is why we start the index at 1
		$archive_slug !== substr( $_SERVER['REQUEST_URI'], 1, strlen( $archive_slug ) )
	) {
		return;
	}

	$probably_using_filter_bar = false;

	// or if no query strings
	if ( ! empty( $_GET ) ) {
		foreach ( $_GET as $key => $value ) {
			if ( substr( $key, 0, strlen( 'tribe_' ) ) ) {
				$probably_using_filter_bar = true;
				break;
			}
		}
	}

	if ( true === $probably_using_filter_bar ) {
		return;
	}

	add_filter( 'posts_where', 'cliff_calendar_appear_empty', 100 );
	add_filter( 'gettext', 'cliff_need_filter_bar_custom_no_events_message', 20, 3 );

}

// throw a wrench in things just to force displaying no results
function cliff_calendar_appear_empty( $where ) {
	return $where . ' AND 1=0 ';
}

// adapted from https://theeventscalendar.com/knowledgebase/change-the-wording-of-any-bit-of-text-or-string/
function cliff_need_filter_bar_custom_no_events_message( $translation, $text, $domain ) {

	$custom_text = array(
		'There were no results found.' => 'Please choose a filter in order to display events.',
	);

	if (
		0 === strpos( $domain, 'the-events-calendar' )
		&& array_key_exists( $translation, $custom_text )
	) {
		$translation = $custom_text[ $translation ];
	}

	return $translation;
}

以上是关于php 事件日历:过滤条:如果未登录使用,强制它们使用过滤条过滤器以查看任何事件中的任何事件的主要内容,如果未能解决你的问题,请参考以下文章

php 如何将自定义过滤器字段添加到没有过滤器插件的Tribe事件日历(在此示例中 - 按类别和标记过滤)。示例:https:

有一个 PHP 重定向到登录页面,而不是强制登录

php 事件日历专业版:更改地图视图起始中心的默认坐标,以及未找到事件结果的默认坐标。

php 事件日历专业版:更改地图视图起始中心的默认坐标,以及未找到事件结果的默认坐标。

php 过滤事件日历的“自定义日期选择器开始日期”扩展名的minDate和maxDate。今天前7天到1个月前

php 过滤事件日历的“自定义日期选择器开始日期”扩展名的minDate和maxDate。今天前7天到1个月前