自定义帖子类型和分类的多个存档页面

时间:2013-07-21 作者:Pete Gale

这都是一个“我该怎么做?”还有“我该怎么做?”问题,因为我正在考虑如何实现我的目标,但它们看起来相当混乱,所以我希望有一个更整洁的方法。

目前我有一个自定义的帖子类型,它附带了一个自定义的分类法,并使用了一个自定义的日期字段(如“事件日期”)。

我想做的是为帖子类型创建一个登录页,并以某种方式将以下内容组合在一起(最好按月份分组):

查看自定义帖子类型中的帖子,分类术语A,将来有事件日期查看自定义帖子类型中的帖子,分类术语A,过去有事件日期查看自定义帖子类型中的帖子,分类术语B,将来有事件日期查看自定义帖子类型中的帖子,分类术语B,过去有事件日期查看自定义帖子类型中的帖子,可能有一个页面,显示当前月份的事件日期,并导航前进或后退一个月的帖子。

我有一些查询可以将事件日期与当前日期进行比较,将未来的日期与过去的日期区分开来,但我不确定a)如何通过向前和向后导航显示当前月份,以及b)如何按月对帖子进行分组(以月份名称为标题)。

我也不确定如何创建适当的模板并将它们链接在一起。我目前有一个存档{自定义帖子类型}。php模板,但我还需要创建哪些其他文件(如果有),并为其分配URL?

感谢所有建议。谢谢

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

您可以创建分类法-{$custom\\u taxonomy}。php,它将处理所有定制分类法的请求,并依赖查询字符串显示基于月份的事件。

url可以根据您的设置进行更改,但应如下所示:

http://yourdomain.com/custom-taxonomy/term-a/?month=2013-07

钩住pre_get_posts 操作(搜索codex) 您可以修改该分类法的查询,并使用WP_Query custom fields 您可以在所需月份显示帖子的参数。

要将月份显示为页面标题,可以使用:

$m = isset( $_GET[\'month\'] ) ? substr($_GET[\'month\'], 5, 2) : date(\'n\');
echo date_i18n(\'F\', mktime(12, 0, 0, (int)$m, 1) );
通过一些逻辑,您可以创建链接以显示下个月和上个月:

$url = get_term_link( get_queried_object()->term_id, \'your-custom-tax\');
$m = isset( $_GET[\'month\'] ) ? substr($_GET[\'month\'],5,2) : date(\'n\');
$y = isset( $_GET[\'month\'] ) ? substr($_GET[\'month\'], 0,4) : date(\'Y\');
$ts = mktime(12, 0, 0, (int)$m, (int)$y, 2);
$next_m_ts = $ts + (30*3600*24);
$prev_m_ts = $ts - (3*3600*24);
$next_url = add_query_arg( array(\'month\' => date(\'Y-m\',  $next_m_ts) ), $url );
$prev_url = add_query_arg( array(\'month\' => date(\'Y-m\',  $prev_m_ts) ), $url );
希望这可以帮助您,但是,请注意,这里的所有代码not 已测试。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post