所以我觉得我为自己的生活变得艰难。
我的网站上有一个搜索字段,我已将其拆分为3个,例如:
<input type="text" name="part1" />
<input type="text" name="part2" />
<input type="text" name="part3" />
在我的结果页面上,我创建了搜索字符串,例如:
$searchstring = $part1.'-'.$part2.'-'.$part3;
然后,该过程将在数据库中搜索值为$searchstring
我在那里找到了一个搜索功能https://gist.github.com/jserrao/d8b20a6c5c421b9d2a51,我认为它与我想要实现的目标非常接近,但我不确定如何实现所有内容。
我的数据大致如下:
(taxonomy) product_cat - (name) Category 1 - (custom field) gc_number - (value I need to search) 77-999-77
(taxonomy) product_cat - (name) Category 2 - (custom field) gc_number - (value I need to search) 73-333-73
(taxonomy) product_cat - (name) Category 3 - (custom field) gc_number - (value I need to search) 76-666-76
然后我需要向用户显示product_cat
名称。
希望这有一定道理,非常感谢任何帮助!
答案 0 :(得分:0)
来自ACF文档
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'post',
'meta_key' => 'color',
'meta_value' => 'red'
));
此示例显示查找所有帖子的参数,其中名为“color”的自定义字段的值为“red”。在您的情况下,您应该将gc_number
用于meta_key,将$searchstring
用于meta_value。然后,您可以使用get_the_terms()
来定义帖子所属的类别字词。
答案 1 :(得分:-1)
我在Stack Exchange上提出了这个问题 - Wordpress Development并得到了Kieran McClung的精彩回答。他的回答非常适合我,并在下面复制。
<form role="search" method="get" id="acf-search" action="<?php site_url(); ?>">
...
<input type="text" name="part1" />
<input type="text" name="part2" />
<input type="text" name="part3" />
<input type="submit" value="Search" />
</form>
<?php
// Results page
// Might be worth checking to make sure these exist before doing the query.
$part_1 = $_GET['part1'];
$part_2 = $_GET['part2'];
$part_3 = $_GET['part3'];
$search_string = $part_1 . '-' . $part_2 . '-' . $part_3;
// Get all product categories
$categories = get_terms( 'product_cat' );
$counter = 0;
// Loop through categories
foreach ( $categories as $category ) {
// Get custom field
$gc_number = get_field( 'gc_number', $category );
// If field matches search string, echo name
if ( $gc_number == $search_string ) {
// Update counter for use later
$counter++;
echo $category->name;
}
}
// $counter only increases if custom field matches $search_string.
// If still 0 at this point, no matches were found.
if ( $counter == 0 ) {
echo 'Sorry, no results found';
}
?>