高级搜索在Wordpress中没有显示正确的结果?

时间:2015-09-28 07:42:17

标签: wordpress search

我已在Wordpress搜索中添加了高级搜索..请查看下面的图片.. enter image description here

以下是我在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 &raquo;', 'tie' ) ); ?>
        </div>        
    </article>
  <?php endwhile; ?>
  <?php endif; ?>

从上面的代码我得到了正确的结果......但是当我改变类别时,结果保持不变...... ??

如果我的搜索结果为1,2,3,4,5,6,7,8,9,并且类别i的更改需要1,5,6,8,9

我的代码有什么问题.. ??

1 个答案:

答案 0 :(得分:1)

首先检查您的$category是否为空。如果没有显示与类别相关的。 还要确保$categoryinteger

查看 WP_QUERY 使用类别参数。

  

cat(int) - 使用类别ID。
category_name(字符串) - 使用   类别slu ..
category__and(array) - 使用类别id。
  category__in(array) - 使用类别id。
category__not_in(数组)    - 使用类别ID。

将循环更改为以下代码。

要使用分页,您可能需要使用所需的参数更改$ args数组。

//用于页数。

posts_per_pagepaged用于分页。

$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) . "'>&laquo; First</a>";
        if ($paged > 1 && $showitems < $pages) echo "<a href='" . get_pagenum_link($paged - 1) . "'>&lsaquo; 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 &rsaquo;</a>";
        if ($paged < $pages - 1 && $paged + $range - 1 < $pages && $showitems < $pages) echo "<a href='" . get_pagenum_link($pages) . "'>Last &raquo;</a>";
        echo "</ul></div>\n";
    }
}