【问题标题】:Pagination in FOREACH LoopFOREACH 循环中的分页
【发布时间】:2012-08-06 06:21:44
【问题描述】:

谁能指出我正确的方向?我正在尝试让分页工作,因为页面上的条目太多(请参阅下面的示例页面链接),但完全处于杂草之中。

这是一个存档页面,它根据自定义字段(开始日期)列出自定义帖子,并在开始日期过后将它们从列表中删除。

这是一个示例页面: http://www.musicfestivaljunkies.com/festival-guide/us-festivals/

这是我一直在使用的代码:

    <?php
    /**
    * Do we need to filter by event tag?
    */
    if(is_tax('event_tags') ) :
$tag = strip_tags( get_query_var('event_tags') );

$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->terms wterms, $wpdb->term_taxonomy wtax, $wpdb->term_relationships wrels
    WHERE wposts.ID = wpostmeta.post_id
    AND wterms.term_id = wtax.term_id
    AND wtax.term_taxonomy_id = wrels.term_taxonomy_id
    AND wrels.object_id = wposts.ID
    AND wterms.slug = '$tag'
    ";

    else:
$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id";
    endif;

    // Build the rest of the query, i.e. only get events with dates, and order newest first.
$querystr .= "
AND wpostmeta.meta_key = 'Date'
AND STR_TO_DATE(wpostmeta.meta_value,'%m/%d/%Y') >= CURDATE()
AND wposts.post_status = 'publish'
AND wposts.post_type = 'events'
ORDER BY STR_TO_DATE(wpostmeta.meta_value,'%m/%d/%Y') ASC
";


$events = $wpdb->get_results($querystr, OBJECT);

if ($events):
echo '<ul>';
foreach ($events as $post):
    global $post;
    setup_postdata($post);

    // Get a friendlier version of the date.
    $date = get_post_meta($post->ID, 'Date', true);
    $date = date_create($date);
    $date = date_format($date, 'jS F, Y');
    ?>

    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - <?php echo $date; ?></li>      
<?php endforeach;
echo '</ul>';
    endif; ?>

【问题讨论】:

    标签: wordpress foreach pagination


    【解决方案1】:

    除非您尝试获取一些非常独特的数据,否则在 WordPress 中通常要避免编写自己的查询。在这种情况下,您需要查看 get_posts() 方法(http://codex.wordpress.org/Template_Tags/get_posts)。我不能 100% 确定您需要哪些参数来实现您的目标,但绝对要从查看“post_type”参数以及“meta_key”和“meta_value”开始,您可以使用它们来查找其中的帖子具有特定元值的特定自定义类型(看起来至少部分是您想要完成的)。

    如果这不能让你朝着正确的方向前进,请让我知道你想要更具体地完成什么,也许我可以进一步澄清。

    更新:get_posts() 文档的这一部分应该专门帮助处理自定义字段,并且作为奖励,它也使用自定义 post_type:http://codex.wordpress.org/Template_Tags/get_posts#Custom_Field_Parameters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 2021-05-28
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多