如何获取层次结构中的直接邻居

时间:2013-07-03 作者:svebal

我为日历构建了一个自定义帖子类型,并创建了如下结构:

2012年(普通家长)2012年1月1日至2012年1月2日

  • 示例:一月<;--February --> 前进

    我尝试了*get\\u previous\\u posts\\u link()*和getNULL,然后设置了全局$post和getNULL

    另一个问题,这通常是正确的方式吗?也许我会得到1月31日的帖子数据/链接?我不确定*get\\u previous\\u posts\\u link()*是否考虑了层次结构。

  • 1 个回复
    最合适的回答,由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的话)。

    结束

    相关推荐

    rewrite rules hierarchical

    我希望我的WordPress遵循以下规则:/productes/ 包含所有产品的页面/productes/[category]/ 包含该类别所有产品的分类页面/productes/[category]/[subcategory]/ 包含该类别所有产品(与2相同)的分类页面/[productes]/[category]/[product]/ A.single-productes.php 将显示类别产品/[productes]/[category]/[subcategory]/[product]/ A.sin