使wp_link_ages()适合Twitter Bootstrap标记

时间:2013-01-20 作者:unfulvio

下面是帖子模板中的Wordpress代码。php for the wp\\u link\\u pages()函数-此函数为内容拆分为多个页面的帖子或页面生成页面导航。

function wp_link_pages($args = \'\') {
    $defaults = array(
        \'before\' => \'<p>\' . __(\'Pages:\'), \'after\' => \'</p>\',
        \'link_before\' => \'\', \'link_after\' => \'\',
        \'next_or_number\' => \'number\', \'nextpagelink\' => __(\'Next page\'),
        \'previouspagelink\' => __(\'Previous page\'), \'pagelink\' => \'%\',
        \'echo\' => 1
    );

    $r = wp_parse_args( $args, $defaults );
    $r = apply_filters( \'wp_link_pages_args\', $r );
    extract( $r, EXTR_SKIP );

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

    $output = \'\';
    if ( $multipage ) {
        if ( \'number\' == $next_or_number ) {
            $output .= $before;
            for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
                $j = str_replace(\'%\',$i,$pagelink);
                $output .= \' \';
                if ( ($i != $page) || ((!$more) && ($page==1)) ) {
                    $output .= _wp_link_page($i);
                }
                $output .= $link_before . $j . $link_after;
                if ( ($i != $page) || ((!$more) && ($page==1)) )
                    $output .= \'</a>\';
            }
            $output .= $after;
        } else {
            if ( $more ) {
                $output .= $before;
                $i = $page - 1;
                if ( $i && $more ) {
                    $output .= _wp_link_page($i);
                    $output .= $link_before. $previouspagelink . $link_after . \'</a>\';
                }
                $i = $page + 1;
                if ( $i <= $numpages && $more ) {
                    $output .= _wp_link_page($i);
                    $output .= $link_before. $nextpagelink . $link_after . \'</a>\';
                }
                $output .= $after;
            }
        }
    }

    if ( $echo )
        echo $output;

    return $output;
}
这里的问题是,生成的标记,即使是通过参数,也不能用于Twitter引导页面导航类,因为标记应该是这样的:

 <div class="pagination">
    <ul>
         <li class="disabled"><span>Pages:</span></li>
         <li class="active"><span><a href="#current-page">1</a></span></li>
         <li><span><a href="#next-page">2</a></span></li>
     </ul>
</div>
然后我尝试使用以下参数:

\'before\' => \'<div class="pagination"><ul><li class="disabled"><span>\' . __( \'Pages:\', \'mytextdomain\' ) . \'</span></li>\',
\'after\' => \'</ul></div>\',
\'link_before\' => \'<li><span>\',
\'link_after\' => \'</span></li>\',
但结果是:

<div class="pagination">
    <ul>
         <li class="disabled"><span>Pages:</span></li>
         <li><span>1</span></li>
         <a href="#somelink">
              <li><span>2</span></li>
         </a>
     </ul>
</div>
正如您所看到的<li> 页码的元素错误地嵌套到<a> 元素。通过查看函数,我可以了解原因。但是,我不确定应该如何继续修复标记。如何筛选或编辑此函数以更正标记?我应该重写一个全新的吗?

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

有一个trac ticket 请求对该功能进行改进,因为它不灵活,但对于托管在官方存储库中的主题是必需的。问题已经解决,需要增加wp_link_pageswp_link_pages_link 过滤器,所以现在可以干净地修改输出,而无需使用自定义函数。

多年来,我在这方面经历了不少尝试,现在我所拥有的是Rarst\\Hybrid_Wing\\Post_Pagination 类,它确实使用了新的过滤器,但有点脏,所以可能不是引导标记的全面实现。

SO网友:Adrien

为什么不在添加以下内容后简单地使用Less重新编译引导CSS:

paginationDiv ul{

.pagination

}
然后此标记可以成功用于引导:

<div class="paginationDiv">
<ul class=\'navigation\'>
    <li>...</li>
    <li>...</li>
     <li>...</li>
 </ul>
</div>

SO网友:vencedor

try this:

wp_link_pages( array(
    \'before\'      => \'<div class="row"><div class="col-md-12">
    <div>Pages</div><ul class="pagination"><li>\',
    \'after\'       => \'</li></ul></div></div>\',
    \'separator\'  => \'</li><li>\',
    \'link_before\'  => \'<span class="page-numbers">\',
    \'link_after\'  => \'</span>\',
) );
结束

相关推荐

帖子修订的可视(非HTML)显示

那么你知道什么时候在帖子上单击“显示修订”并可以选择编辑任何最近的草稿吗?我有一个不懂技术的客户,他对修订预览如何显示为HTML而不是如何显示在网站上感到沮丧。他发现很难确定要使用哪个版本,因为他看不到图像、格式等。我找了一个插件,可以让你预览已发布的版本,但找不到类似的内容。有人能为这个问题推荐一个插件或解决方案吗?谢谢