问题描述
我想要 wp_link_pages(mutli-page 帖子) 在这些数字之前显示页码,字母”previous”,以及这些数字后的”next” 。看起来像这样:
上一页 1,2,3,4 下一页
我试图这样做没有插件。这是我迄今为止所尝试过的,但它不起作用,只显示数字。
<?php wp_link_pages(array(
'before' => '<span style="clear:both; display:block">Pages',
'after' => '</span>',
'next_or_number'=>'number',
'previouspagelink' => 'previous',
'nextpagelink'=> 'Next'
)); ?>
最佳解决方案
您使用的功能,wp_link_pages
Codex,默认情况下没有您要查找的功能。
但是,您可以通过使用回调函数轻松扩展它,该函数在该函数参数上注册为过滤器:
add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');
然后,过滤器将修改该功能 on-the-fly 中使用的参数,并将丢失的链接注入 prev
和 next
参数,这些参数在编号的链接列表 (next_or_number' => 'number'
) 的左侧和右侧输出:
/**
* Add prev and next links to a numbered page link list
*/
function wp_link_pages_args_prevnext_add($args)
{
global $page, $numpages, $more, $pagenow;
if (!$args['next_or_number'] == 'next_and_number')
return $args; # exit early
$args['next_or_number'] = 'number'; # keep numbering for the main part
if (!$more)
return $args; # exit early
if($page-1) # there is a previous page
$args['before'] .= _wp_link_page($page-1)
. $args['link_before']. $args['previouspagelink'] . $args['link_after'] . '</a>'
;
if ($page<$numpages) # there is a next page
$args['after'] = _wp_link_page($page+1)
. $args['link_before'] . ' ' . $args['nextpagelink'] . $args['link_after'] . '</a>'
. $args['after']
;
return $args;
}
用法:
wp_link_pages(array(
'before' => '<p>' . __('Pages:'),
'after' => '</p>',
'next_or_number' => 'next_and_number', # activate parameter overloading
'nextpagelink' => __('Next'),
'previouspagelink' => __('Previous'),
'pagelink' => '%',
'echo' => 1 )
);
如果您的主题始终使用上一个和下一个链接,那么您可以稍稍更改该功能,使其成为默认行为,每当使用 number
(默认) 时,您需要在主题中写入更少。
这是天鹅绒蓝调建议的一个稍微不同的实现。
次佳解决方案
wp_link_pages()
功能仅显示文本或数字,从不同时显示。如果您查看该函数的代码,您将看到没有选项可以通过传递参数使其行为不同。
话虽如此,没有插件,有三种方法可以做到这一点:
-
在主题的 functions.php 文件中创建自己的功能。工作,但是你会有一个新的功能。
-
使用 2-3 个
wp_link_pages()
实例。非常低效的黑客 -
使用过滤器首选方法见下文。
我在博客上写了一篇关于如何做到这一点的文章。基本上,我使用 wp_link_pages_args 过滤器,并在 functions.php 文件中添加一个功能,该函数添加了一个新的选项’next_and_number’ 。
WordPress Hack: Display Number & Next/Previous Links with wp_link_pages()
第三种解决方案
尝试这样,你可以更自定义它。但它应该像你想要的那样做:-)
function tp_link_pages() {
global $page, $numpages;
echo paginate_links( array(
'format' => get_permalink() . '%#%/',
'current' => $page,
'total' => $numpages
) );
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。