dan
  • 0
Новичок

Где вызвать функцию разбиения на страницы?

  • 0

Я только что следил за этим руководством — http://www.lateralcode.com/wordpress-pagination/

Я написал эту функцию в своем файле functions.php и сделал многочисленные заметки о том, как она работает.

Проблема сейчас в том, что я просто не знаю, что с ним делать, чтобы заставить его работать. Я хочу, чтобы он работал в моих результатах поиска и в цикле на странице моего блога.

Есть идеи? Я пытаюсь изучить это, а не использовать плагин….

Это мой код из моего файла loop over ride — loop-search.php

<h1>Results for: "<i><?php echo get_search_query(); ?></i>"</h1>
<?php if(have_posts()) { while(have_posts()) { the_post();?>

<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php }}?>

Спасибо.

Share
  1. Вы добавили pagination() функцию в свой functions.php файл? Затем вам нужно только вызвать его в разных шаблонах, где вы хотите его использовать. search.php, или archive.php,… Какие файлы используются, можно увидеть в иерархии шаблонов. Можете ли вы отредактировать свой вопрос и включить имена файлов в каталоге вашего шаблона?

    • 0
  2. Если вы добавили pagination() функцию в свой файл functions.php, вам нужно будет вызывать ее только в файлах темы. Выбор файла зависит от того, где вы хотите его отобразить, подробности см. в разделе Иерархия шаблонов.

    Вы не хотите вызывать это внутри Цикла (между while () {} или while :... endwhile; ), потому что это будет снова отображать его для каждого сообщения. Назовете ли вы это по своему search.php или loop-search.php зависит от ваших личных предпочтений. Twenty Ten делает это в loop*.php файлах. В обобщенном виде это будет выглядеть так:

    <!-- Display pagination links above the posts -->
    <?php pagination(); ?>
    <!-- Display the posts -->
    <?php if(have_posts()) { while(have_posts()) { the_post();?>
    <!-- Some details for this post -->
    <!-- End the loop -->
    <?php }} /* if, while */ ?>
    <!-- Display pagination links again below the posts -->
    <?php pagination(); ?>
    

    Я рекомендую вам добавить префикс имени pagination() функции к чему-то более уникальному. Вы никогда не знаете, когда WordPress будет включать функцию, называемую pagination() самой собой. dan_pagination() возможная альтернатива 🙂

    В Интернете есть много руководств по пагинации, и многие из них содержат неточности. Как и учебник, на который вы ссылаетесь. Вместо использования общего количества сообщений текущего запроса он будет подсчитывать все сообщения в блоге, чтобы определить количество страниц. Это приведет к ошибкам на страницах поиска. Я бы изменил начало функции следующим образом:

    function wpse18805_pagination( $scope = 2 ) {
        global $wp_query;
    
        $numPages = $wp_query->max_num_pages;
        $curPage = $wp_query->get( 'paged' );
        if ( ! $curPage ) {
            $curPage = 1;
        }
    
        // page bounds ... continue from there
    

    Эта функция также будет генерировать ссылки, которые всегда начинают считаться с основания блога, поэтому она не будет работать для поисковых страниц. Чтобы исправить это, замените строку после // echo the link на:

    echo '<li><a href="' . get_pagenum_link( $page ) . '">' . $page . '</a></li>';
    
    • 0

Оставить ответ

You must login to add an answer.