使用挂钩修改事件结束日期
Event end date modify using hook
我正在使用 The event calendar。
我想调整事件。所以他们在结束后小时内不会转到过去的事件。因此,例如,如果活动在美国东部时间下午 3 点结束,我们不希望它在美国东部时间下午 4 点之前移至过去的活动页面。
简而言之:我想将活动结束日期设置在1小时之前。
所以 Evet 不会继续过去。
我在 functions.php 文件中添加了以下代码
add_filter( 'parse_query', 'posts_filter2',15 );
function posts_filter2( $query ){
$type = 'tribe_events';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'tribe_events' == $type && $query->get( 'eventDisplay' ) == 'default') {
$queryParamsCounter = 0;
$notification = "2021-04-16 13:06:00";
if (isset($notification)) {
$meta_query['ends-after'] = array(
'key' => '_EventEndDate',
'value' => $notification,
'compare' => '>',
'type' => 'DATETIME',
);
}
$query->set( 'meta_query', $meta_query);
}
}
但还是不行。
有人知道吗?
谢谢!
我已经使用 parse_query 解决了这个问题。
我已经使用过滤器钩子修改了 wp_query 的参数。
在 functions.php
文件中添加以下代码
add_filter( 'parse_query', 'posts_filter2',15 );
function posts_filter2( $query ){
$type = 'tribe_events';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'tribe_events' == $type && $query->get( 'eventDisplay' ) == 'default') {
$queryParamsCounter = 0;
$format = 'Y-m-d G:i:s';
$timezone_name = Tribe__Events__Timezones::wp_timezone_string();
$timezone = new DateTimeZone( $timezone_name );
$current = date_create( '-2 hour', $timezone );
$enddate = date_format($current,"Y-m-d G:i:s");
if (isset($enddate)) {
$meta_query['ends-after'] = array(
'key' => '_EventEndDate',
'value' => $enddate,
'compare' => '>',
'type' => 'DATETIME',
);
}
$query->set( 'meta_query', $meta_query);
}
}
if (isset( $meta_query['ends-after'] ) && $_GET['Recommendation'] != '')
{
$queryParamsCounter++;
$recommendation = $_GET['Recommendation'];
}
谢谢
我正在使用 The event calendar。 我想调整事件。所以他们在结束后小时内不会转到过去的事件。因此,例如,如果活动在美国东部时间下午 3 点结束,我们不希望它在美国东部时间下午 4 点之前移至过去的活动页面。
简而言之:我想将活动结束日期设置在1小时之前。
所以 Evet 不会继续过去。
我在 functions.php 文件中添加了以下代码
add_filter( 'parse_query', 'posts_filter2',15 );
function posts_filter2( $query ){
$type = 'tribe_events';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'tribe_events' == $type && $query->get( 'eventDisplay' ) == 'default') {
$queryParamsCounter = 0;
$notification = "2021-04-16 13:06:00";
if (isset($notification)) {
$meta_query['ends-after'] = array(
'key' => '_EventEndDate',
'value' => $notification,
'compare' => '>',
'type' => 'DATETIME',
);
}
$query->set( 'meta_query', $meta_query);
}
}
但还是不行。
有人知道吗?
谢谢!
我已经使用 parse_query 解决了这个问题。
我已经使用过滤器钩子修改了 wp_query 的参数。
在 functions.php
文件中添加以下代码
add_filter( 'parse_query', 'posts_filter2',15 );
function posts_filter2( $query ){
$type = 'tribe_events';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'tribe_events' == $type && $query->get( 'eventDisplay' ) == 'default') {
$queryParamsCounter = 0;
$format = 'Y-m-d G:i:s';
$timezone_name = Tribe__Events__Timezones::wp_timezone_string();
$timezone = new DateTimeZone( $timezone_name );
$current = date_create( '-2 hour', $timezone );
$enddate = date_format($current,"Y-m-d G:i:s");
if (isset($enddate)) {
$meta_query['ends-after'] = array(
'key' => '_EventEndDate',
'value' => $enddate,
'compare' => '>',
'type' => 'DATETIME',
);
}
$query->set( 'meta_query', $meta_query);
}
}
if (isset( $meta_query['ends-after'] ) && $_GET['Recommendation'] != '')
{
$queryParamsCounter++;
$recommendation = $_GET['Recommendation'];
}
谢谢