Implementando una tabla general de contenido en páginas de una sola página paginada

4

Estoy trabajando en un blog y la mayoría de mis publicaciones son tan largas que requieren paginación. Consulta uno de mis publicaciones . Esta publicación tiene muchas páginas.

El único problema es que no puedo encontrar una manera de mostrar una tabla de contenido que enumere todos los encabezados de forma consistente en varias páginas.

He demarcado la publicación única en diferentes páginas con la etiqueta: <!--nextpage--> .

Actualmente estoy usando el complemento "Table of Contents Plus (TOC +)" y funciona bastante bien en páginas individuales , pero falla cuando la página está paginada usando <!--nextpage--> .

En realidad espero encontrar ayuda para escribir un complemento que pueda hacer el truco.

EDITADO - SOLUCIÓN PROPUESTA / HACK

En una oferta para resolver este problema, he asignado los siguientes pasos para resolver este problema:

  1. Verifique si la página está paginada: wordpress WordPress tiene una variable global, $multipage que indicará si una publicación está paginada o no.

  2. si la publicación está paginada, entonces la tabla de código de contenido (que se escribirá o modificará) buscará los encabezados en cada página.

  3. Los encabezados que se encuentran en cada página se almacenarán en una matriz y se usarán para mostrar la tabla de contenido

  4. Además, para Publicación única paginada, el código se configurará para mostrar la misma TOC de forma coherente en todas las páginas en lugar de mostrar diferentes TOC por página

EL CÓDIGO

<?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; 
} 
?>

Si la publicación está paginada, se realizarán las siguientes comprobaciones en el archivo 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 } ?>

De hecho, reduje el código anterior a una función simple 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.
}
?>
    
pregunta Tamara 30.03.2015 - 17:51

1 respuesta

0

Solo inspecciona el contenido actual de la publicación para <!--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 );
}

En la página 2 de 3 que devuelve:

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

En una publicación no paginada devuelve:

Array
(
    [0] => 1
    [1] => 0
)
    
respondido por el jim.duck 25.08.2015 - 22:04

Lea otras preguntas en las etiquetas