如何在活动日历插件的后台(管理员)修改活动列表?

时间:2019-08-28 作者:Kirill Ozeritski

在我的Wordpress网站中,我使用插件事件日历(pro)。后端有一个包含事件列表的页面。指向此页面的链接如下所示:https://example.com/wp-admin/edit.php?post_type=tribe_events

因此,现在我需要钩住/过滤到这个事件列表中来修改它。我的任务是最初只显示一个特定组织者的事件。

尝试查看此插件的现有挂钩和筛选器。但似乎没有什么适合我的。还尝试查找插件文件,但找不到负责后端事件列表的插件文件。

1 个回复
最合适的回答,由SO网友:Kirill Ozeritski 整理而成

好吧,我自己找到了解决办法。我用了WordPress钩子parse_query. 这是我发现的最精确的东西。在这个钩子中,我检查它是否是后端,我的用户是否有我之前添加的名为“organizer\\u id”的元数据。但这只是为了获得筛选列表所需的organizer\\u id。

代码如下:

add_filter( \'parse_query\', \'ozz_filter_events_by_organizer\' );
function ozz_filter_events_by_organizer( $query ) {
    $current_user = wp_get_current_user();
    $organizer_id = get_user_meta( $current_user->ID, \'organizer_id\' );

    if ( is_admin() and $query->query[\'post_type\'] == \'tribe_events\' and !empty( $organizer_id ) ) {
        $qv = &$query->query_vars;
        $qv[\'meta_query\'][] = array(
            \'field\' => \'_EventOrganizerID\',
            \'value\' => $organizer_id
        );

        //echo \'<pre>\' . print_r( $qv, true ) . \'</pre>\';
    }
}
因此,每当站点上有查询时,这个过滤器挂钩就会触发。不是很方便,但我能找到最好的。因此,当它特别考虑后端的事件列表时,它允许我过滤查询。

相关推荐