Использование Walker для меню и плагин wp-pagenavi

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Добрый день.

На сайте есть категории:
Санатории (id=10)
Отели (id=11)

У каждой категории есть одинаковые регионы, по сути отличаются только отображением санаториев или отелей.

Для того чтобы не плодить дубли рубрик регионов сделал условие в archive.php :

 array(11), 'cat' => $catid));
}
elseif ($_GET['bctype'] == 'otel') {
query_posts(array('category__not_in' => array(10), 'cat' => $catid));
}
else {

}

// дальше простой цикл

?>

чтобы получать из меню нужный мне GET, прописал два Walker’a в funtions.php

classes );
    $class_names = ' class="' .esc_attr( $class_names ). '"';
    $output.= '<li>ID . '"' .$class_names. '>'; 

    // назначаем атрибуты a-элементу
    $attributes.= !empty( $item->url ) ? ' href="' .esc_attr($item->url). '?bctype=sanatorium"' : '';
    $item_output = $args->before; 

    // проверяем, на какой странице мы находимся
    $current_url = (is_ssl()?'https://':'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $item_url = esc_attr( $item->url );
    if ( $item_url = $current_url ) $item_output.= '<a>'.$item->title.'</a>';
    else $item_output.= $item->title; 

    // заканчиваем вывод элемента
    $item_output.= $args->after;
    $output.= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
  }
}

// собираем меню для отелей
class otelWalker extends Walker_Nav_Menu {
  function start_el(&$output, $item, $depth, $args) {
    // назначаем классы li-элементу и выводим его
    //$class_names = join( ' ', $item->classes );
    $class_names = ' class="' .esc_attr( $class_names ). '"';
    $output.= '<li>ID . '"' .$class_names. '>'; 

    // назначаем атрибуты a-элементу
    $attributes.= !empty( $item->url ) ? ' href="' .esc_attr($item->url). '?bctype=otel"' : '';
    $item_output = $args->before; 

    // проверяем, на какой странице мы находимся
    $current_url = (is_ssl()?'https://':'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $item_url = esc_attr( $item->url );
    if ( $item_url = $current_url ) $item_output.= '<a>'.$item->title.'</a>';
    else $item_output.= $item->title; 

    // заканчиваем вывод элемента
    $item_output.= $args->after;
    $output.= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); 

  }
}
?>

Дальше задача, выводить по 5 записей с цифровой постраничной навигацией, с этим всегда справлялся плагин wp-pagenavi, но на этот раз при адресе вида:

Первая страница отображается нормально:
но на второй он так же показывает данные с первой страницы…:

В связи с чем может быть связана данная проблема?

В рубриках где нет посторонних GET запросов отображаются страницы нормально.

Создай свой первый сайт на WordPress

zetrider

Кодинг, дизайн, wordpress

Оцените автора
Добавить комментарий

  1. А если использовать для постраничной разбивки

    <?php wp_link_pages(); ?>

    ?

    Ответить
  2. zetrider автор

    насколько я знаю это для страниц? разделаем контент при помощи nextpage и получаем постраничный текст на странице.

    а в этой задаче записи выводятся в рубрике.

    Если использовать стандарт (next_posts_link и previous_posts_link), то тоже самое.

    Ответить
    1. Видимо query_posts не выдает по каким-то причинам номер страницы.

      Ответить
  3. zetrider автор

    Спасибо Sergey Biryukov:

    Обычно так бывает, когда в query_posts() не передаётся номер страницы (аргумент paged). Можно попробовать его добавить:

    $catid = get_query_var('cat');
    if ($_GET['bctype'] == 'sanatorium') {
    query_posts(array('category__not_in' => array(11), 'cat' => $catid, 'paged' => get_query_var('paged')));
    }
    elseif ($_GET['bctype'] == 'otel') {
    query_posts(array('category__not_in' => array(10), 'cat' => $catid, 'paged' => get_query_var('paged')));
    }
    Ответить