У меня есть собственная таксономия под названием "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; ?> > <?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/
Есть идеи, почему это происходит?
Спасибо
Скотт