【发布时间】:2016-06-29 15:02:40
【问题描述】:
我使用 ACF Wordpress 插件创建了一个国家/地区列表。该插件允许创建自定义帖子元字段,因此每个帖子都有一个额外的元数据,即国家/地区名称。
我使用 WP_Query 获取国家/地区列表并将其存储在 $result 变量中:
$myquery = new WP_Query($myargs);
if ($myquery -> have_posts()) :
while ($myquery -> have_posts()) :
$myquery -> the_post();
array_push($arr, get_field('country'));
endwhile;
endif;
wp_reset_postdata();
$result = array_unique($arr);
我现在需要的是选择一个国家,然后在搜索返回具有该国家元字段的帖子时保留它。 (右侧的蓝色按钮。)
我该怎么做?到目前为止,我已经尝试过:
<select name="countries" id="countries" class="form-control">
<?php
for ($i = 0; $i < count($result); $i++) :
$selected = (isset($_POST['countries']) && $result[$i] == $_POST['countries']) ? 'selected' : '';
$selected = ($result[$i] == @$_POST['countries']) ? 'selected' : '';
echo '<option value="' . $result[$i] . '" ' . $selected . '>' . $result[$i] . '</option>';
endfor;
?>
</select>
不会保留所选国家/地区。也不会
<?php
$selected = (isset($_GET['country']) && $result[$i] == $_GET['country']) ? 'selected="selected"': '';
?>
除此之外,我还需要添加“全部”值以允许选择所有国家/地区:<option value="all">all</option>。 “all”值也必须保留。
顺便说一句,有人可以在这里为我解释一下$_POST 的必要性吗?我认为此应用不需要<form>…</form>。
可以在http://elanonimo.dp.ua/找到该应用程序请忽略绿色下拉按钮。 (完整的WP主题源码在http://www.filedropper.com/package1467207510)
【问题讨论】:
-
$selected = ($result[$i]的行没有添加任何内容 -
为了提高可读性,请考虑仅在 php 代码的开头使用
<?php并在末尾使用?>而不是每一行。 -
为了提高可读性,考虑使用(正确的)缩进(循环内的前导空格)