страницы ссылок wp: отображать текущий номер страницы только при наличии нескольких разрывов страниц?


Я пытаюсь создать функцию для отображения текущей главы (страницы) в single.php файл ТОЛЬКО в том случае, если имеется более одной главы (разрыв страницы).

Эта функция выведет номер главы в заголовке страницы под заголовком. Затем я настрою и буду использовать страницы wp_link в нижней части для разбиения на страницы глав.

В настоящее время моя функция не работает, она ничего не возвращает, и если я удалю оператор IF if ($многостраничный) {}, он вернет "Глава 0".

Мне нужен совет по этому поводу.

/**
* Get current chapter number
*/
if ( ! function_exists( 'sbwp_get_current_chapter' ) ) {

    function sbwp_get_current_chapter() {

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

        if ( $multipage ) {
            echo '<p class="page-link accent">';
            echo esc_html(( '' . __( "Chapter ", "sbwp" ) . '' . $page ));
            echo '</p>';
        }

    }

}
Author: Simon Bouchard, 2015-04-30

2 answers

$multipage построен внутри метода setup_postdata() WP_Query. Он вызывается, когда вы запускаете the_post(). Так что, как объяснил @s_ha_dum, вы должны сделать петлю вокруг этого:

Вы можете попробовать это:

if( have_posts() )
{ 
    the_post();                      // Make a call to setup_postdata().
    echo sbwp_get_current_chapter(); // Display the current chapter.
    rewind_posts();                  // Rewind back.
}

Перед вашим основным циклом, где вы должны помнить о перемотке назад.

 1
Author: birgire, 2015-04-30 15:06:45

$multipage является переменной "внутри цикла". Я не отследил точно, где и как он установлен, но, учитывая только эту информацию, очевидным решением является поместить ваш код в цикл, что в любом случае является хорошей практикой, поскольку от этого цикла зависит ряд вещей. Что-то вроде:

if (have_posts()) {
    while (have_posts() {
      the_post();
      $sbwp_story_thumbnail = "";
      // ....
    }
}
 2
Author: s_ha_dum, 2015-04-30 14:53:50