我使用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>
。 “全部”价值也必须保留。
$_POST
对我的需要吗?我认为这个应用程序不需要<form>…</form>
。
该应用可在http://elanonimo.dp.ua/找到。请忽略绿色下拉按钮。 (完整的WP主题源代码位于http://www.filedropper.com/package1467207510)
答案 0 :(得分:0)
添加“全部”值以允许选择所有国家/地区:全部。 只需添加初始化声明:
$myquery = new WP_Query();
if ($myquery -> have_posts()) {
$arr = ['All']; // statement added
while ($myquery -> have_posts()) {
答案 1 :(得分:0)
BTW有没有人可以在这里解释一下$ _POST的需求呢?我认为这个应用程序不需要<form>…</form>
。
如果服务器从浏览器收到HTTP POST请求, $_POST['countries']
将在php中初始化。传统的方法是在form
中添加一个国家/地区字段,并使用方法=&#34;发布&#34;提交按钮。但是,在您的页面中,输入按钮不是表单,但它可以工作。这意味着某处有一些javascript将click
事件处理程序(执行get请求)附加到input
。
但是,在您的页面中,没有<form>
。某个地方有一个javascript将事件附加到输入按钮。它使用POST,而不是GET。它还会在http://elanonimo.dp.ua/?num=off&country=%D0%98%D1%82%D0%B0%D0%BB%D0%B8%D1%8F&price=
网址上发布一个国家/地区。
如果你想在php中使用那个国家,你应该使用$_GET['country']
如果$_GET['country']
不起作用,则可能存在编码问题。请使用标准的ASCII国家/地区名称进行尝试。
答案 2 :(得分:0)
array_unique($arr)
没有重新索引数组的键,因此for ($i = 0; $i < count($result); $i++)
循环不起作用。你可以
$result = array_values(array_unique($arr));
或
foreach ($result as $country) {
$selected = (isset($_GET['countries']) && $country == $_GET['countries']) ? ' selected' : '';
echo '<option value="' . $country . '"' . $selected . '>' . $country . '</option>', "\n";
}