我为日历构建了一个自定义帖子类型,并创建了如下结构:
2012年(普通家长)2012年1月1日至2012年1月2日
2012年2月1日2012年3月1日如果我现在整个月都在工作,我想显示上个月和下个月页面的链接。示例:一月<;--February --> 前进
我尝试了*get\\u previous\\u posts\\u link()*和getNULL,然后设置了全局$post和getNULL。
另一个问题,这通常是正确的方式吗?也许我会得到1月31日的帖子数据/链接?我不确定*get\\u previous\\u posts\\u link()*是否考虑了层次结构。
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
好我不认为get_previous_posts_link
会帮助你的。它仅返回指向当前查询中的前一组帖子的链接。(参见previous_posts_link
它会打印此链接get_previous_posts_link
返回它)。
并引用法典:
打印指向当前查询中前一组帖子的链接。
如果需要在PHP中使用这些值,请使用get\\u previous\\u posts\\u link()。
因为post查询通常按逆时间顺序排序,所以next\\u posts\\u link()通常指向较旧的条目(指向集合的末尾),而PREVISSION\\u link()通常指向较新的条目(指向集合的开头)。
您可以尝试使用以下插件:
- http://wordpress.org/plugins/next-page/
- http://wordpress.org/plugins/next-page-not-next-post/但我不确定它们是否能正常工作。
我总是用我的自定义SQL查询来实现这一点——它更高效,因为您不必选择所有页面(以及关于这些页面的所有信息)。
function my_get_next_page_link($post_id =null) {
global $post, $wpdb;
if ( $post_id === null )
$p = $post;
else
$p = get_post($post_id);
$res_id = $wpdb->get_var(
$wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_type=\'page\' AND post_status=\'publish\' AND post_parent = %d AND menu_order > %d ORDER BY menu_order ASC, ID ASC LIMIT 1", $p->post_parent, $p->menu_order)
);
if ( !$res_id )
return null;
return get_permalink($res_id);
}
当然,您应该在这个函数中编写自己的SQL查询(这取决于您的查询参数)。您可以为上一页链接编写相同的函数。另外,这可能不是最简单的方法,但它很有效,而且非常可定制(如果您知道SQL的话)。