/index.php?post_type=event&event-date=2011-07-25是如何工作的?如果它不起作用呢?

时间:2011-07-21 作者:TJ Sherrill

我有一个带有slug“event”的events cpt,我在几个地方使用它,但我试图创建一个“day”视图,显示给定一天的所有事件。我还在函数中的CPT创建中设置了存档参数。php

我一直在这件事上周旋,但基本上我想做的是:

领域com/索引。php?post\\u type=事件(&U);活动日期=2011年7月25日

这将打开一个页面,其中列出了一大堆垃圾(随机帖子),而不是当天的事件。

如果我将其更改为event\\u archive。php?post\\u type=事件(&U);事件日期=2011-07-25,我得到一个页面找不到错误。在这一点上,我甚至不担心自定义重写规则,我只是希望它能够工作。

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

您必须使用重写API才能使其正常工作。首先,您需要注册重写规则。

add_action( \'init\', \'wpse23712_rewrites\' );
function wpse23712_rewrites()
{
    add_rewrite_rule( \'events/day/(\\d{4}-\\d{2}-\\d{2})/\', \'index.php?post_type=event&event_date=$matches[1]\', \'top\' );
}
然后将event\\u date添加到查询变量中,以便wordpress能够理解它。

add_filter( \'query_vars\', \'wpse23712_vars\' );
function wpse23712_vars ( $vars )
{
    $vars[] = \'event_date\';
    return $vars;
}
然后在前端(在归档event.php中),您可以使用get_query_var() 并在查询中使用它。我建议您使用自定义字段(在wp\\U Posteta表中)为每个字段存储一些内容,即使是ISO格式的日期。然后可以运行meta\\u查询来检索这些事件帖子。

所以当有人导航到你的网站时。com/event/day/2011-07-28/它将显示当天的活动。

我没有测试上面的内容,但你应该可以从这里开始。

结束

相关推荐

Changing attachment urls?

如何更改附件页URL的格式/[post-url]/[attachment-name]/ 到/media/[attachment-name]/? 我知道我可以覆盖get_attachment_link 通过attachment_link 过滤器,但我想我需要更改重定向结构,以便WordPress知道如何处理这些URL?