不幸的是,仅仅使用本机函数无法做到这一点:WP是……请求不可知的,并且总是生成指向当前页面的链接(nav manus,list pages…)。
此外,您不能使用筛选器,因为wp_link_pages()
没有合适的过滤器。
在我的主题中,我使用自己的函数,基于this code. 这篇文章可能太长了,所以我把它作为一个插件放在GitHub上:Logical Page Links.
您可以按原样使用插件,也可以将代码复制到主题中。
生成的标记如下所示:
<p class="pager">
<b title=\'You are here.\'>1</b>
<a class=number href=\'http://example.com/page/2/\'>2</a>
</p>
The
<b>
标记当前页面,您可以通过以下方式设置其样式:
.pager b
{
color: #fff;
background: #111;
}
插件的自述中列出了更多功能。
更新我误解了这个问题。我以为你需要这样的档案功能。很抱歉
以下是的重写版本wp_link_pages()
作为插件。我想你会把它纳入你的主题。
<?php # -*- coding: utf-8 -*-
/*
Plugin Name: Numbered In-Page Links
Description: Replacement for wp_link_pages with numbers. Use do_action( \'numbered_in_page_links\' );
Version: 1.0
Required: 3.1
Author: Thomas Scholz
Author URI: http://toscho.de
License: GPL v2
*/
! defined( \'ABSPATH\' ) and exit;
add_action( \'numbered_in_page_links\', \'numbered_in_page_links\', 10, 1 );
/**
* Modification of wp_link_pages() with an extra element to highlight the current page.
*
* @param array $args
* @return void
*/
function numbered_in_page_links( $args = array () )
{
$defaults = array(
\'before\' => \'<p>\' . __(\'Pages:\')
, \'after\' => \'</p>\'
, \'link_before\' => \'\'
, \'link_after\' => \'\'
, \'pagelink\' => \'%\'
, \'echo\' => 1
// element for the current page
, \'highlight\' => \'b\'
);
$r = wp_parse_args( $args, $defaults );
$r = apply_filters( \'wp_link_pages_args\', $r );
extract( $r, EXTR_SKIP );
global $page, $numpages, $multipage, $more, $pagenow;
if ( ! $multipage )
{
return;
}
$output = $before;
for ( $i = 1; $i < ( $numpages + 1 ); $i++ )
{
$j = str_replace( \'%\', $i, $pagelink );
$output .= \' \';
if ( $i != $page || ( ! $more && 1 == $page ) )
{
$output .= _wp_link_page( $i ) . "{$link_before}{$j}{$link_after}</a>";
}
else
{ // highlight the current page
// not sure if we need $link_before and $link_after
$output .= "<$highlight>{$link_before}{$j}{$link_after}</$highlight>";
}
}
print $output . $after;
}