我已经在我的WordPress主题中实现了基于类别的数字分页:
到目前为止,我所做的是创建一个自定义的页面模板,其中包含一个分页的摘录列表。一旦用户单击摘录以查看完整的文章,我还希望对显示的返回文章列表进行分页。
我的理解是,这是在主题的“single.php”中实现的,尽管我可能是错的。
分页功能适用于我的自定义模板,但是当我尝试在single.php中实现自定义查询时,我认为分页功能试图在文章中找到下一页,这不是我想要实现的(因为它不存在)。我想简单地对所有返回的文章进行分页,这样用户就可以从这个类别中的一篇文章导航到下一篇文章。
我读过一些关于下一个/上一个链接的文章,但是我更愿意使用像blog post by Boutros AbiChedid这样的东西--我为我的自定义页面模板偷了这个想法,它太棒了!
我已经在主题的'template.php'中做了一个这个类的衍生,作为我的自定义主题的分页,它工作得很好,但是当它通过返回的单个帖子来工作时,我缺少了一些东西。
我是否应该给予使用另一个自定义页面模板,每页显示1篇完整的文章,我知道我的分页工作就像一个魅力?我可以这样做,但我想这样做的权利。这是目标。
以下是我在single.php中目前所拥有的内容:
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php $wp_query = new WP_Query('category_name=news_and_updates&showposts=1&paged=' . $paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<?php get_template_part( 'content', 'single' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; ?>
<?php if (function_exists("pagination")) {
pagination($wp_query->max_num_pages);
} ?>
</div><!-- #content -->
</div><!-- #primary -->
我找到了这个tutorial,它解释了如何通过用'paginate_links'对象替换下一个/上一个链接来调整分页。我只是看起来不能让它工作。
我知道我需要从twentyeleven主题中添加类似于此类的内容到自定义主题的“functions.php”中,然后将其自定义为使用数字分页,并在single.php或single-content.php中调用它:
if ( ! function_exists( 'twentyeleven_content_nav' ) ) :
/**
* Display navigation to next/previous pages when applicable
*/
function twentyeleven_content_nav( $nav_id ) {
global $wp_query;
if ( $wp_query->max_num_pages > 1 ) : ?>
<nav id="<?php echo $nav_id; ?>">
<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyeleven' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?></div>
</nav><!-- #nav-above -->
<?php endif;
}
endif; // twentyeleven_content_nav
/**
* Return the URL for the first link found in the post content.
*
* @since Twenty Eleven 1.0
* @return string|bool URL or false when no link is present.
*/
function twentyeleven_url_grabber() {
if ( ! preg_match( '/<a\s[^>]*?href=[\'"](.+?)[\'"]/is', get_the_content(), $matches ) )
return false;
return esc_url_raw( $matches[1] );
}
我会继续编辑这篇文章,直到我弄清楚这一点,除非有人谁这样做之前回答。
1条答案
按热度按时间zqry0prt1#
我不确定我是否完全理解你想要达到的目的,所以如果这没有帮助,我很抱歉。
从表面上看,你想在页面中嵌套一个自定义循环。如果你只想自定义一个常规的帖子列表,那么你应该查看archive.php,而不是single.php. Check out this hierarchy来了解不同模板类型的细节。在最简单的形式中,存档页面用于显示多个帖子(archive.php),而单个页面用于显示单个帖子/页面(single.php)。
对于页面内的自定义循环,请避免使用$wp_query,因为它用于您正在查看的实际页面,并将驱动
对于分页,我会同意教程的说法,使用paginate_links。再加上一点CSS,这应该会给予你想要的效果。
因此,总的来说,查询应该看起来像这样,几乎是最简单的形式。