分页帖子的自定义页面链接|wp_link_ages<!--nextpage-->快速标记

时间:2011-03-09 作者:sta777

是否有人知道是否可以更改wp\\U link\\u页面,以便使用每个下一页quicktag的标题而不是数字?我似乎在这上面找不到任何东西。

这是我如何使用quicktag的一个示例:

<!--nextpage--><!--pagetitle:Overview-->

使用wp_link_pages(); 显示/输出;Pages: 1 2

我希望它能够显示/输出;Pages: Overview | 2nd Page Title | 3rd Page Title

它将<!--pagetitle:Overview--> 并将其用作下一页的链接。

非常感谢您的任何想法/帮助,S。

2 个回复
最合适的回答,由SO网友:t31os 整理而成

这将是一种黑客行为,但也可以使用其他函数。

将此添加到主题functions.php 文件

function wp_link_pages_titled($args = \'\') {
    $defaults = array(
        \'before\' => \'<p>\' . __(\'Pages:\'), 
        \'after\' => \'</p>\',
        \'link_before\' => \'\', 
        \'link_after\' => \'\',
        \'echo\' => 1
    );

    $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP );

    global $page, $numpages, $multipage, $more, $pagenow, $pages;

    $output = \'\';
    if ( $multipage ) {
        $output .= $before;
        for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
            $part_content = $pages[$i-1];
            $has_part_title = strpos( $part_content, \'<!--pagetitle:\' );
            if( 0 === $has_part_title ) {
                $end = strpos( $part_content, \'-->\' );
                $title = trim( str_replace( \'<!--pagetitle:\', \'\', substr( $part_content, 0, $end ) ) );
            }
            $output .= \' \';
            if ( ($i != $page) || ((!$more) && ($page==1)) ) {
                $output .= _wp_link_page($i);
            }
            $title = isset( $title ) && ( strlen( $title ) > 0 ) ? $title : \'First\';
            $output .= $link_before . $title . $link_after;
            if ( ($i != $page) || ((!$more) && ($page==1)) )
                $output .= \'</a>\';
        }
        $output .= $after;
    }
    if ( $echo )
        echo $output;
    return $output;
}
现在更新您必须的每个通话wp_link_pages 而是调用新函数wp_link_pages_titled.

它不是完美的,而且有点黑,但它会满足你的要求,只是确保你在将它们写入帖子时使用这种格式。。

Content intro

<!--nextpage--><!--pagetitle: Title 1 -->

Next page content 1

<!--nextpage--><!--pagetitle: Title 2 -->

Next page content 2

<!--nextpage--><!--pagetitle: Title 3 is longer -->

Next page content 3

<!--nextpage--><!--pagetitle: Another Title -->

Next page content 4
您也可以将链接标题设置为第一页,但它必须出现在任何其他内容之前,例如,就在第一行。。

<!--pagetitle: Title for very first link -->
Content intro
编写代码的目的是让它工作起来,还有改进的空间,我主要想说明这是可能的,这取决于您(或任何其他人)对其进行扩展。

希望这能帮助您顺利完成任务……)

SO网友:Ivan Volkov

伟大的解决方案!但是我在使用这个函数时遇到了问题。如果我的页面看起来像这样

Content intro
<!--nextpage--><!--pagetitle: Title 1 -->
Next page content 1
<!--nextpage--><!--pagetitle: Title 2 -->
Next page content 2
<!--nextpage--><!--pagetitle: Title 3 is longer -->
Next page content 3
<!--nextpage--><!--pagetitle: Another Title -->
Next page content 4
看起来不错,但如果

Content intro
<!--nextpage-->
Next page content 1
<!--nextpage--><!--pagetitle: Title 2 -->
Next page content 2
<!--nextpage-->
Next page content 3
<!--nextpage--><!--pagetitle: Another Title -->
Next page content 4
结果太可怕了!我做了​​进行一些更改以修复它(仅更改)

        if( 0 === $has_part_title ) {
            $end = strpos( $part_content, \'-->\' );
            $title = trim( str_replace( \'<!--pagetitle:\', \'\', substr( $part_content, 0, $end ) ) ).\', \';
        } else { $title = $i.\', \';}
现在似乎工作得更好了!;-)

结束

相关推荐

Pagination with custom loop

我的问题可能是Pagination not working with custom loop, 但有一种不同。我使用自定义循环来显示flash游戏。我想按类别在游戏页面上分页。类别php:<?php if ($cat) { $cols = 2; $rows = 4; $paged = ((\'paged\')) ? get_query_var(\'paged\') : 1; $post_per_page = $cols * $rows; // -1 s