实现跨单个分页帖子页面的通用目录

时间:2015-03-30 作者:Tamara

我正在写博客,我的大多数帖子都很长,需要分页。请参见以下内容之一my posts. 这篇文章有很多页。

唯一的问题是,我找不到一种方法来显示一个目录,该目录将在多个页面上一致地列出所有标题。

我用标签将单个帖子划分为不同的页面:<!--nextpage-->.

我目前正在使用“目录+(TOC+)插件,它在single pages, 但在使用对页面分页时失败<!--nextpage-->.

实际上,我希望在编写一个插件时能得到帮助。

EDITED - PROPOSED SOLUTION/HACK

为了解决这个问题,我制定了以下步骤来解决这个问题:

检查页面是否分页-wordpress wordpress有一个全局变量,$multipage 这将指示一个帖子是否分页。

如果文章已分页,则内容代码表(要编写或修改)将检查每页的标题。

每页找到的标题将存储在一个数组中,并用于显示目录

此外,对于分页的单篇文章,代码将设置为在每页上一致显示相同的TOC,而不是每页显示不同的TOC

THE CODE

<?php
/**
 * Determines whether or not the current post is a paginated post.
 * @return   boolean    True if the post is paginated; false, otherwise.
 */
function acme_is_paginated_post() {
    global $multipage;
    return 0 !== $multipage; 
} 
?>
如果对post进行分页,将在中进行以下检查single.php 文件:

<?php if ( acme_is_paginated_post() ) { ?>
<div class="post-pagination-toc">
        <!-- paginated post TOC  display that checks headers across different poages and the displays all headers in as TOC\'s content uniformly across all paginated pages -->
</div>
<?php else { ?>
<div class="normal-singlepage-toc">
    <!-- normal TOC display for single non-paginated post -->
</div>
<?php } ?>
事实上,我将上述代码简化为一个简单的函数TOC_new()

<?php 
function TOC_new () {
global $numpages;
if ( is_singular() && $numpages > 1 ) {
    // This is a single post
    // and has more than one page;
    // Implement a General TOC to be displayed consistently multiple Pages and return values
} else {
    // This is a single post
    // and has only one page;
    // implement TOC code for single pages.
}
?>

1 个回复
SO网友:jim.duck

只需检查当前帖子内容<!--nextpage-->:

function wpse_check_multi_page()
{
    $num_pages    = substr_count(
        $GLOBALS[\'post\']->post_content,
        \'<!--nextpage-->\'
    ) + 1;
    $current_page = get_query_var( \'page\' );
    return array ( $num_pages, $current_page );
}
第2页,共3页,返回:

Array
(
    [0] => 3
    [1] => 2
)
在未分页的帖子上返回:

Array
(
    [0] => 1
    [1] => 0
)

结束

相关推荐

Pagination and Related Posts

是否可以对嵌入在single中的以下相关POST代码使用分页。我的主题的php。 <?php // for use in the loop, list 5 post titles related to first tag on current post $tags = wp_get_post_tags($post->ID); if ($tags) { $first_tag = $