2012-08-09 70 views
0

任何人都可以指向正确的方向吗?我试图让分页工作,因为我只是在页面上有太多条目(请参阅下面的示例页面的链接),但完全在杂草中。FOREACH循环中的分页

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

下面是一个示例页面: 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; ?> 

回答

0

除非你正在试图获得一些严重的独特的数据,编写自己的查询通常是在WordPress中要避免的事情。在这种情况下,您需要查看get_posts()方法(http://codex.wordpress.org/Template_Tags/get_posts)。我不是100%确切地知道你需要哪些参数来实现你的目标,但绝对要先看看'post_type'参数,以及'meta_key'和'meta_value',你可以用它来查找内部的帖子一个特定的自定义类型,它们具有特定的元值(这看起来至少部分是你期望完成的)。

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

更新:get_posts的这一部分()DOC应与自定义字段具体帮助,并作为奖励它使用自定义post_type还有:http://codex.wordpress.org/Template_Tags/get_posts#Custom_Field_Parameters