2012-05-02 57 views
0

我正在尝试为我的帖子实现分页。虽然我有点卡在PHP功能,也如何调用它。如何实现Wordpress分页?

简单的方法是这样的我想:

<?php posts_nav_link(); ?> 

但是如果我想自定义分页?

这里是我当前的代码:

<?php 
    global $wp_query; 
    $total = $wp_query->max_num_pages; 
    if ($total > 1) { 
     if (!$current_page = get_query_var('paged')) 
       $current_page = 1; 
     echo paginate_links(array(
       'base' => get_pagenum_link(1) . '%_%', 
       'format' => '?paged=%#%', 
       'current' => $current_page, 
       'total' => $total, 
       'mid_size' => 4, 
       'type' => 'list' 
     )); 
    } 
?> 

这是正确的,我该怎么称呼呢?在index.php?循环中的哪个位置?谢谢。

编辑澄清:我如何实现这个代码?目前我已经把它放在我的functions.php中。那么我怎样(以及在循环中的什么地方)“引用”这个函数,以便显示分页。

+0

尽量在你要完成,也许有人会知道该怎么回答你的问题:-) – gernberg

+0

@gernberg感谢您的意见,现在编辑什么更具体的。 – Harry

回答

1

有两种方法可以实现此代码。看起来你现在好像在两者之间。

第一种方法是将您的分页代码直接添加到模板中,以便在循环内部的某处使用(最有可能在关闭<?php endwhile; ?>标记之前的某处)。如果你使用的是single.php模板,你会把它放在那里,如果没有,放在index.php中。将其放置在循环内部取决于您希望页面上显示分页的位置。

第二种方法是添加分页代码到functions.php文件(你已经做了)。但是,您需要稍微修改一下代码。您需要将代码封装在一个函数中,并将该函数命名为某个函数。我用your_custom_pagination为例。你的functions.php文件很可能已经包装在php标签中,所以我删除了这些文件。

function your_custom_pagination() { 
    global $wp_query; 
    $total = $wp_query->max_num_pages; 
    if ($total > 1) { 
     if (!$current_page = get_query_var('paged')) { 
      $current_page = 1; 
     } 
     echo paginate_links(array(
      'base' => get_pagenum_link(1) . '%_%', 
      'format' => '?paged=%#%', 
      'current' => $current_page, 
      'total' => $total, 
      'mid_size' => 4, 
      'type' => 'list' 
     )); 
    } 
} 

然后,你需要进入你正在使用的模板,该代码<?php your_custom_pagination(); ?>放到我上面所示调用分页功能的相同点。

我没有实际测试你的代码,所以假设它是有效的一切都应该工作。

+0

非常感谢!我现在需要的只是按照如何在HTML中显示来正确格式化分页。你可能会建议我如何做到这一点? (不确定PHP的语法抱歉) – Harry