我只需要为我的 wp 活动组织者模板实现分页。这是在widget-event-list.php 内,但可能适用于其他模板。这是从模板中的工作示例复制粘贴的。
这使用 WP_Query 循环而不是模板默认使用的 $eo_event_loop()。 WP_Query 循环具有仅获取“事件”数据的参数。
幸运的是,活动组织者功能(如eo_get_event_datetime_format())仍然有效。
在这个例子中,我只输出<h4>标签中的标题。
这个解决方案的灵感来自this answer to another question。
<h1>Paginated Query Area</h1>
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type'=>'event', // Your post type name
'posts_per_page' => 3,
'paged' => $paged,
);
$loop = new WP_Query( $args );
?>
<?php if ( $loop->have_posts() ): ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php
//Generate HTML classes for this event
$eo_event_classes = eo_get_event_classes();
//For non-all-day events, include time format
$format = eo_get_event_datetime_format();
?>
<h4 class="event-title"><?php the_title(); ?></h4>
<?php endwhile; ?>
<div class="upcoming-pagination">
<?php // Pagination display
$total_pages = $loop->max_num_pages;
if ($total_pages > 1){
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%',
'current' => $current_page,
'total' => $total_pages,
'prev_text' => __('« prev'),
'next_text' => __('next »'),
));
}
?>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>