有人能指出我正确的方向吗?我正试图让分页工作,因为我在页面上有太多条目(参见下面示例页面的链接),但我完全在杂草中。
这是一个存档页面,它根据自定义字段(开始日期)列出自定义帖子,并在开始日期过后从列表中删除它们。
这是一个示例页面: 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 :(得分:0)
除非您尝试获取一些非常独特的数据,否则在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