Пользовательская таксономия Wordpress с постраничным получением 404 не найдена - PullRequest
1 голос
/ 27 января 2011

У меня есть собственная таксономия под названием "dcategory", поэтому я создал файл шаблона с именем "taxonomy-dcategory.php", чтобы определить, как он будет отображаться.Вот код для этого шаблона:

<?php
global $paged, $wp_query;
get_header();
?>
<div id="leftcontent">
<?php if(is_user_logged_in()) : ?>
    <?php
    $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
    if($term->parent == 0) : ?>
      <h1>Specialist Directory</h1>
      <h2><?php echo $term->name; ?></h2>
      <ul>
        <?php
        $subtermcats = get_terms('dcategory', 'hide_empty=0&parent='.$term->term_id.'&orderby=name');
        foreach($subtermcats as $key => $data) {
            $termlink = get_term_link($data, 'dcategory');
            echo "<li><a href=\"".$termlink."\">".$data->name."</a></li>";
        }
        ?>
      </ul>
    <?php else: ?>
        <h1>Specialist Directory</h1>
        <?php
        $topterm = get_term_by( 'id', $term->parent, get_query_var( 'taxonomy' ) );
        ?>
        <h2><?php echo $topterm->name; ?> &gt; <?php echo $term->name; ?></h2>
        <?php
            // Include Search - Search results returned in $_SESSION['lpoc_search_data'];
            include("functions/directorysearch.php");
            if(count($_SESSION['lpoc_search_data']) > 0) {
                $temp = $wp_query;
                $wp_query = null;
                $args = array(
                   'post_type' => 'listings',
                   'post__in' => $_SESSION['lpoc_search_data'],
                   'showposts' => 10,
                   'paged' => $paged,
                   'orderby' => 'post__in'
                );
                $wp_query = new WP_Query($args);
            } else {
                query_posts("cat=9999999"); // Make a fake query that will be empty to flush out the content from the page we are on
            }
        ?>
        <?php if (have_posts()) : ?>
            <div class="pageination clearfix">
              <div class="smallleftcontent">
                <select name="sortby" class="dropdownreplace">
                  <option value="date-desc">Order by latest added</option>
                  <option value="date-asc">Order by oldest added</option>
                  <option value="price-asc">Order by price ascending</option>
                  <option value="price-desc">Order by price descending</option>
                </select>
              </div>
              <div class="smallrightcontent">
              <?php wp_pagenavi(); ?>
              </div>
            </div>
            <?php while (have_posts()) : the_post(); ?>
            <h2><?php the_title(); ?></h2>
            <?php endwhile; ?>
            <div class="pageination clearfix">
              <div class="smallleftcontent">
                <select name="sortby" class="dropdownreplace">
                  <option value="date-desc">Order by latest added</option>
                  <option value="date-asc">Order by oldest added</option>
                  <option value="price-asc">Order by price ascending</option>
                  <option value="price-desc">Order by price descending</option>
                </select>
              </div>
              <div class="smallrightcontent">
              <?php wp_pagenavi(); ?>
              </div>
            </div>
        <?php else: ?>
        <?php endif; ?>
    <?php endif; ?>
<?php else: // USER NOT LOGGED IN ?>
    <?php include("functions/pleaseregister.php"); ?>
<?php endif; ?>
</div>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Вот что происходит:

Проверьте, вошел ли пользователь в систему. Если не отображается информация о регистрации.Если пользователь находится в родительской dcategory, то отображаются выбранные dcategory children.Если пользователь находится в дочерней dcategory, тогда запустите мой собственный пользовательский запрос к базе данных, который получает идентификаторы постов в порядке, основанном на расстоянии от пользователя к посту.Результаты возвращаются в массив сеанса и передаются как пользовательский запрос в $ wp_query.Запрос работает, и на странице отображаются первые десять сообщений вместе с нумерацией страниц, сгенерированной wp_pagenavi (все верно).

Но при переходе на страницу 2 мне возвращается страница, не найденная:

http://www.example.com/dcategory/antiques/ до http://www.example.com/dcategory/antiques/page/2/

Есть идеи, почему это происходит?

Спасибо

Скотт

Ответы [ 2 ]

1 голос
/ 31 января 2011

Я вроде как решил это сам.

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

Поэтому вместо создания нового запроса я настроил на фильтрацию существующие результаты, а не так:

1 голос
/ 29 января 2011

Восстановить настройки постоянной ссылки ...

...