我已在Wordpress搜索中添加了高级搜索..请查看下面的图片..
以下是我在wordpress中的搜索代码:
global $wp_query;
$args = array (
's' => $s,
'cat' => $category,
'year' => $year,
'monthnum' => $monthnum
);
$query = new WP_Query($args) ;
<?php if ( $query->have_posts() ) : ?>
<?php while (have_posts() ) : the_post(); ?>
<article>
<h2><?php the_title(); ?></h2>
<div class="entry">
<?php the_content( __( 'Read More »', 'tie' ) ); ?>
</div>
</article>
<?php endwhile; ?>
<?php endif; ?>
从上面的代码我得到了正确的结果......但是当我改变类别时,结果保持不变...... ??
如果我的搜索结果为1,2,3,4,5,6,7,8,9,并且类别i的更改需要1,5,6,8,9
我的代码有什么问题.. ??
答案 0 :(得分:1)
首先检查您的$category
是否为空。如果没有显示与类别相关的。
还要确保$category
为integer
查看 WP_QUERY 使用类别参数。
cat(int) - 使用类别ID。
category_name(字符串) - 使用 类别slu ..
category__and(array) - 使用类别id。
category__in(array) - 使用类别id。
category__not_in(数组) - 使用类别ID。
将循环更改为以下代码。
要使用分页,您可能需要使用所需的参数更改$ args数组。
//用于页数。
posts_per_page
,paged
用于分页。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$per_page = 8; // records per page.
$args = array (
's' => $s,
'cat' => $category,
'year' => $year,
'monthnum' => $monthnum ,
'posts_per_page' => $per_page,
'post_status' => 'publish',
'paged' => $paged,
);
// the query
$query = new WP_Query( $args ); ?>
<?php if ( $query->have_posts() ) : ?>
<!-- pagination here -->
<!-- the loop -->
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php endwhile; ?>
<!-- end of the loop -->
<!-- pagination here -->
<?php if (function_exists("pagination_custom")) {
pagination_custom($query->max_num_pages);
}
?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
更新:分页:
// Pagination code
function pagination_custom($pages = '', $range = 4)
{
$showitems = ($range * 2) + 1;
global $paged;
if (empty($paged)) $paged = 1;
if ($pages == '') {
global $wp_query;
$pages = $wp_query->max_num_pages;
if (!$pages) {
$pages = 1;
}
}
if (1 != $pages) {
echo "<div class=\"pagination\"><ul>";
if ($paged > 2 && $paged > $range + 1 && $showitems < $pages) echo "<a href='" . get_pagenum_link(1) . "'>« First</a>";
if ($paged > 1 && $showitems < $pages) echo "<a href='" . get_pagenum_link($paged - 1) . "'>‹ Previous</a>";
for ($i = 1; $i <= $pages; $i++) {
if (1 != $pages && (!($i >= $paged + $range + 1 || $i <= $paged - $range - 1) || $pages <= $showitems)) {
echo ($paged == $i) ? "<li><a href='" . get_pagenum_link($i) . "' class=\"current\">" . $i . "</a></li>" : "<li><a href='" . get_pagenum_link($i) . "' class=\"inactive\">" . $i . "</a></li>";
}
}
if ($paged < $pages && $showitems < $pages) echo "<a href=\"" . get_pagenum_link($paged + 1) . "\">Next ›</a>";
if ($paged < $pages - 1 && $paged + $range - 1 < $pages && $showitems < $pages) echo "<a href='" . get_pagenum_link($pages) . "'>Last »</a>";
echo "</ul></div>\n";
}
}