2012-07-01 137 views
1

我实现了基于类别的数字分页在我的WordPress的主题:WordPress的分页的single.php中

pagination

什么我目前所做的就是创建一个自定义页面模板与分页列表摘录。一旦用户点击摘录查看完整文章,我也想分页显示返回的文章列表。

这是我的理解,这是在主题的'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或单一内容中调用它.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">&larr;</span> Older posts', 'twentyeleven')); ?></div> 
      <div class="nav-next"><?php previous_posts_link(__('Newer posts <span class="meta-nav">&rarr;</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]); 
} 

我会继续编辑这篇文章,直到我弄明白为止,除非有人在回答之前完成了这个。

+0

我不明白。你希望你的分页链接到下一个/上一篇文章?或者你想分页链接到下一页的摘录? – ARWVISIONS

回答

0

我不知道我是否完全理解你想要达到的目标,所以如果这没有帮助,我表示歉意。

通过它的外观你想要在页面中嵌套一个自定义循环。如果你只是想定制一个常规的帖子列表,那么你应该看看archive.php,而不是single.php。 Check out this hierarchy了解不同模板类型的详细信息。最简单的形式是,归档页面用于显示多个帖子(archive.php),单个页面用于显示单个帖子/页面(single.php)。

对于页面中的自定义循环,避免使用$ wp_query,因为这是用于你看实际的页面,并将带动

对于分页,我将与教程同意并使用paginate_links。有了一点CSS,这应该给你你想要的效果。

因此,总之,查询应该看起来像这样几乎最简单的形式。

$args=array(); // Set $args with whatever parameters for your query 
$args['category_name']='news_and_updates'; 
$args['showposts']=1; 
$args['paged']=(get_query_var('paged') ? get_query_var('paged') : 1); // Get the current page, or show page 1. 
$search=new WP_Query($args) 
    if($search->have_posts()) : 
     while($search->have_posts()) : $search->the_post(); 
     the_title(); // Whatever for displaying each post. 
     the_excerpt(); 
     endwhile; 
    /* Pagination - This assumes you have 'pretty permalinks'. */ 
    $ulpn=99999999; // Should be a bigger number than the number of pages you'll ever produce. 
    $pagination=paginate_links(array(
     'base'=>str_replace($ulpn,'%#%',esc_url(get_pagenum_link($ulpn))), 
     'format'=>'/page/%#%', 
     'current'=>max(1,get_query_var('paged')), 
     'total'=>$search->max_num_pages, 
     'prev_text'=>'<', 
     'next_text'=>'>', 
     'type'=>'array')); // There are other parameters you can use to customise this - check the codex using the link above. 
     if($pagination) { ?> 
     <div class="pagination"><?php foreach($pagination as $page) { echo $page; } ?></div> 
     <?php } 
    else : ?> 
    <h2>Sorry, no results found</h2> 
    <p>Try searching, or using the menu to find what you're looking for.</p> // Handle no results with whatever message 
    endif;