搜索后,URL链接页面分页有问题...如果我按升序搜索,则结果仅在第1页中显示,然后,如果我单击第2页,则结果将返回到默认列表。我知道问题是由于网址链接问题引起的,但是谁能给我一个有关如何解决该问题的建议。
代码如下
if(!function_exists("add_action")) {
return;
}
get_header();
the_post();
$industry_types = get_terms(
[
"taxonomy" => "industry_type",
"hide_empty" => false
]
);
/** Define default values */
$default_query = [
"post_type" => "directory_member",
"showposts" => -1,
"post_per_page" => 8,
"orderby" => "title",
"order" => "asc",
"keywords" => "",
"paged" => 1
];
$query = wp_parse_args($_GET, $default_query);
if(isset($_GET["keywords"])) {
$query["s"] = esc_attr($_GET["keywords"]);
}
if(isset($_GET["industry_types"])) {
$query["tax_query"] = [
[
"taxonomy" => "industry_type",
"fields" => "term_id",
"terms" => $_GET["industry_types"]
]
];
}
if(isset($_GET["order_by"])) {
$query["orderby"] = esc_attr($_GET["order_by"]);
}
if(isset($_GET["order_by"])) {
$query["order"] = esc_attr($_GET["order"]);
}
$members = new WP_Query($query);
?>
<section id="content">
<div class="container">
<form action="#filter" id="filter" method="get" class="row">
<div class="col-12 col-lg-8">
<div class="row">
<div class="form-group col-12 col-md-auto">
<select name="order_by" id="order-by" class="form-control">
<option value="title" <?php selected("title", $query["orderby"]); ?>>
<?php _e("Alphabetical", TEXTDOMAIN); ?>
</option>
<option value="industry_type" <?php selected("industry_type", $query["orderby"]); ?>>
<?php _e("Industry Type", TEXTDOMAIN); ?>
</option>
<option value="date" <?php selected("date", $query["orderby"]); ?>>
<?php _e("Date Joined", TEXTDOMAIN); ?>
</option>
</select>
</div>
<div class="form-group col-12 col-lg-auto">
<select name="order" id="order" class="form-control">
<option value="asc" <?php selected("asc", $query["order"]); ?>>
<?php _e("Ascending", TEXTDOMAIN); ?>
</option>
<option value="desc" <?php selected("desc", $query["order"]); ?>>
<?php _e("Descending", TEXTDOMAIN); ?>
</option>
</select>
</div>
<div class="form-group col-12 col-lg-auto">
<div class="dropdown">
<button class="text-left btn btn-outline-secondary dropdown-toggle col-12" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<?php _e("Industries", TEXTDOMAIN); ?>
</button>
<div class="dropdown-menu p-3 mt-3 w-sm-100" style="width:600px;" aria-labelledby="dropdownMenuButton">
<div class="row">
<?php
foreach($industry_types as $industry_type) {
$checked = "";
if(isset($_GET["industry_types"]) && in_array($industry_type->term_id, $_GET["industry_types"], false)) {
$checked = ' checked="checked"';
}
?>
<div class="col-12 col-lg-6 mb-2">
<input type="checkbox" name="industry_types[]" value="<?php echo $industry_type->term_id; ?>" id="industry-type-<?php echo $industry_type->slug; ?>" class="mr-3"<?php echo $checked; ?>>
<label for="industry-type-<?php echo $industry_type->slug; ?>">
<?php echo $industry_type->name; ?>
</label>
</div>
<?php } ?>
</div>
</div>
</div>
</div>
<div class="form-group col-auto d-none d-lg-block">
<button type="submit" class="btn btn-primary">
<i class="fa fa-filter"></i>
<?php _e("Filter Results", TEXTDOMAIN); ?>
</button>
</div>
</div>
</div>
<div class="col-12 col-lg-4 pr-lg-0">
<div class="float-right form-group w-100">
<input type="search" name="keywords" placeholder="<?php echo sprintf(__("Search %s members...", TEXTDOMAIN), $members->found_posts); ?>" class="form-control" value="<?php echo esc_html($query["keywords"]); ?>">-->
</div>
</div>
<div class="col-12 form-group col-auto d-block d-lg-none">
<button type="submit" class="btn btn-primary w-100">
<i class="fa fa-filter"></i>
<?php _e("Filter Results", TEXTDOMAIN); ?>
</button>
</div>
</form>
<div class="row mt-5 pt-5">
<?php
while($members->have_posts()) {
$members->the_post();
$member_id = get_the_ID();
$member_logo = get_field("logo", $member_id);
$member_logo_url = $member_logo["sizes"]["large"];
$member_industry_types = get_the_terms($member_id, "industry_type");
$member_url = get_field("url", $member_id);
?>
<article class="col-12 col-md-6 col-lg-3 text-center mb-4">
<a href="<?php echo esc_url($member_url); ?>" target="_blank">
<img src="<?php echo $member_logo_url; ?>" alt="<?php echo esc_html(get_the_title()); ?>" class="img-fluid">
</a>
<div class="member-name font-weight-bold mt-4">
<?php the_title(); ?>
</div>
<div class="industry-types mt-2">
<?php
foreach($member_industry_types as $member_industry_type) {
echo $member_industry_type->name;
if(next($member_industry_types)) {
echo " / ";
}
}
?>
</div>
</article>
<?php
wp_reset_query();
}
?>
</div>
<?php
$current_page = get_query_var("paged") | 1;
$pages = $members->max_num_pages | 1;
?>
<nav aria-label="Page navigation" class="mt-5 pt-5">
<ul class="pagination justify-content-center">
<?php
$class = "";
if($current_page <= 1) {
$class = " disabled";
}
?>
<li class="page-item<?php echo $class; ?>">
<a class="page-link" href="#" tabindex="-1">
<?php _e("Previous", TEXTDOMAIN); ?>
</a>
</li>
<?php
for($round = 1; $round <= $pages; $round++) {
$class = "";
if($current_page === $round) {
$class = " disabled";
}
$_GET["paged"] = $round;
$query_url = build_query($_GET);
?>
<li class="page-item<?php echo $class; ?>">
<a class="page-link" href="?<?php echo $query_url; ?>">
<?php echo $round; ?>
</a>
</li>
<?php
}
$query_url = "";
$class = " disabled";
if($current_page < $pages) {
$class = "";
$_GET["paged"] = $current_page + 1;
$query_url = "?" . build_query($_GET);
}
?>
<li class="page-item <?php echo $class; ?>">
<a class="page-link" href="<?php echo $query_url; ?>">
<?php _e("Next", TEXTDOMAIN); ?>
</a>
</li>
</ul>
</nav>
</div>
</section>
<?php
get_footer();
搜索后在URL链接页面分页上有问题...如果我按升序搜索,则结果仅在第1页中显示,然后,如果我单击第2页,则结果将返回默认列表。 ...
问题在build_query()函数内部。不幸的是,您没有提供该功能的来源。我可以猜测到您的build_query()没有传递所有需要的参数或没有以错误的方式传递它们。