我想使用”自定义”字段制作一个搜索表单, 可以搜索表postmeta显示报价和信息搜索, 在本地主机中键入代码, 但是该站点无法加载我使用XAMPP是什么问题?
这是我的代码
<?php
$args = array(
'post_type' => 'house', 'meta_query' => array(
array(
'key' => 'city', 'value' => $_GET["city"], 'compare' => 'LIKE', ), array(
'key' => 'part', 'value' => $_GET["part"], 'compare' => 'LIKE', ), array(
'key' => 'statuss', 'value' => $_GET["statuss"], 'compare' => 'LIKE', ), array(
'key' => 'typee', 'value' => $_GET["typee"], 'compare' => 'LIKE', ), array(
'key' => 'statuss', 'value' => $_GET["statuss"], 'compare' => 'LIKE', ), array(
'key' => 'rooms', 'value' => $_GET["rooms"], 'compare' => 'LIKE', ), array(
'key' => 'wcss', 'value' => $_GET["wcss"], 'compare' => 'LIKE', ), array(
'key' => 'metr', 'value' => $_GET["metr"], 'compare' => 'LIKE', ), array(
'key' => 'minip', 'value' => $_GET["minip"], 'compare' => 'LIKE', ), array(
'key' => 'maxp', 'value' => $_GET["maxp"], 'compare' => 'LIKE', ), array(
'key' => 'tabaghe', 'value' => $_GET["tabaghe"], 'compare' => 'LIKE', ), array(
'key' => 'rahn', 'value' => $_GET["rahn"], 'compare' => 'LIKE', ), array(
'key' => 'ejareh', 'value' => $_GET["ejareh"], 'compare' => 'LIKE', )
)
);
$all_posts = new WP_Query($args);
if ($all_posts->have_posts()) :?>
<div class="titSearchHouse"
style="text-align: center;width: 150px;margin: 12px auto 0;background: #d0d0d0;color: #FFFFFF;font-family: 'B Yekan';padding: 10px">
display results
</div>
<div class="parti">
<?php while ($all_posts->have_posts()):$all_posts->the_post(); ?>
<!--start post wrapper-->
<a class="post-link" href="<?php echo get_the_permalink(); ?>">
<div class="post wow fadeInUp">
<div class="post-inner">
<div class="post-thumb">
<?php echo get_the_post_thumbnail($all_posts->post->ID, 'main-thumbnail'); ?>
</div>
<span
class="post-title"><?php echo get_the_title($all_posts->post->ID); ?></span>
</div>
<div class="post-meta">
<span><i
class="fa fa-clock-o"></i><?php echo get_the_date('Y-m-d', $all_posts->post->ID); ?></span>
<span><i class="fa fa-user"></i><?php echo get_the_author(); ?></span>
<span><i class="fa fa-thumbs-o-up"></i>506</span>
</div>
</div>
</a>
<!--end post wrapper-->
<?php endwhile; ?>
</div>
wp_reset_postdata();
<?php endif; ?>
谢谢
#1
你缺少查询的关系部分, 我不确定这不是唯一的问题, 但看起来应该像这样:
$args = array(
'post_type' => 'house', 'meta_query' => array(
'relation' => 'AND', array(
'key' => 'city', 'value' => $_GET["city"], 'compare' => 'LIKE', ), array(
'key' => 'part', 'value' => $_GET["part"], 'compare' => 'LIKE', ), array..... etc,
希望这可以帮助
#2
这可能在游戏中有些晚, 但是查看代码可能未得到任何结果, 因为尚未定义查询之间的关系。默认情况下, WP_Query使用’relation’=>’AND’比较查询的元数据, 这意味着必须在数据库中找到元数据的每一位, 以便查询返回结果, 因此, 如果出于某种原因或其他原因即使在数据库中找不到一个查询数据(或未成功发送到查询), 它也将返回负结果(或在你的情况下不返回任何结果)。
简而言之, 如果要查找非常特定的查询结果(元数据的所有位都应与查询匹配), 则应使用AND运算符;否则, 如果要查找更通用的内容(则应使用OR运算符)将匹配一个元查询或另一个元查询, 或另一个, 依此类推-你就会明白)。我还将确保添加一个否定结果标志, 以便你至少可以首先查看查询是否已发送(和返回)。
考虑到以上几点, 更改后的查询版本将类似于:
<?php
$args = array(
'post_type' => 'house', 'meta_query' => array(
'relation' => 'OR', array(
'key' => 'city', 'value' => $_GET["city"], 'compare' => 'LIKE', ), array(
'key' => 'part', 'value' => $_GET["part"], 'compare' => 'LIKE', ), array(
'key' => 'statuss', 'value' => $_GET["statuss"], 'compare' => 'LIKE', ), array(
'key' => 'typee', 'value' => $_GET["typee"], 'compare' => 'LIKE', ), array(
'key' => 'statuss', 'value' => $_GET["statuss"], 'compare' => 'LIKE', ), array(
'key' => 'rooms', 'value' => $_GET["rooms"], 'compare' => 'LIKE', ), array(
'key' => 'wcss', 'value' => $_GET["wcss"], 'compare' => 'LIKE', ), array(
'key' => 'metr', 'value' => $_GET["metr"], 'compare' => 'LIKE', ), array(
'key' => 'minip', 'value' => $_GET["minip"], 'compare' => 'LIKE', ), array(
'key' => 'maxp', 'value' => $_GET["maxp"], 'compare' => 'LIKE', ), array(
'key' => 'tabaghe', 'value' => $_GET["tabaghe"], 'compare' => 'LIKE', ), array(
'key' => 'rahn', 'value' => $_GET["rahn"], 'compare' => 'LIKE', ), array(
'key' => 'ejareh', 'value' => $_GET["ejareh"], 'compare' => 'LIKE', )
));
$all_posts = new WP_Query($args);
if ($all_posts->have_posts()): ?>
<div class="titSearchHouse" style="text-align: center;width: 150px;margin: 12px auto;
background: #d0d0d0;color: #FFFFFF;font-family: 'B Yekan';padding: 10px">
display results
</div>
<div class="parti">
<?php while ($all_posts->have_posts()):$all_posts->the_post(); ?>
<!--start post wrapper-->
<a class="post-link" href="<?php echo get_the_permalink(); ?>">
<div class="post wow fadeInUp">
<div class="post-inner">
<div class="post-thumb">
<?php echo get_the_post_thumbnail($all_posts->post->ID, 'main-thumbnail'); ?>
</div>
<span
class="post-title"><?php echo get_the_title($all_posts->post-
>ID); ?></span>
</div>
<div class="post-meta">
<span><i
class="fa fa-clock-
o"></i><?php echo get_the_date('Y-m-d', $all_posts->post->ID); ?></span>
<span><i class="fa fa-user"></i><?php echo get_the_author(); ?>
</span>
<span><i class="fa fa-thumbs-o-up"></i>506</span>
</div>
</div>
</a>
<!--end post wrapper-->
<?php endwhile; ?>
</div>
<?php wp_reset_postdata(); ?>
<?php
<!--add some error text to your query so that you at least know whether or not the query is working-->
else: ?>
Sorry, no results match your query parameters.
<?php endif; ?>
最好使用OR运算符作为初始查询的开始, 特别是在你遇到诸如此类的复杂查询时。这样, 你实际上可以查看是否至少返回了一些结果, 并清除了任何潜在的错误。同样, 使用$ _GET或$ _POST数据, 检查$ _GET / $ _ POST变量是否确实包含有效数据始终是一个好主意, 否则, 你将不得不长时间摸索。
希望这对某人有帮助!干杯。
#3
<?php
$args = array(
'post_type' => 'house', 'meta_key' => {keyname}, <-!!!!!!!!!!!!!!!!!!
'meta_query' => array(
'relation' => 'OR', array(
'key' => 'city', 'value' => $_GET["city"], 'compare' => 'LIKE', ), ...
?>
你忘记在查询中放置meta_key了!
根据https://developer.wordpress.org/reference/classes/wp_query/:
” meta_value”-请注意, 查询中还必须存在” meta_key =键名”。
评论前必须登录!
注册