WordPress搜索表单和搜索结果通过自定义分类中的ACF字段

时间:2017-01-23 作者:Laura Clarke

我问了这个关于堆栈溢出的问题,但到目前为止还没有任何乐趣。链接:https://stackoverflow.com/questions/41716882/wordpress-search-form-and-search-result-through-acf-field-in-custom-taxonomy/41718983#41718983

以下问题的副本:

所以我觉得我让自己的生活很艰难。

我在我的网站上有一个搜索字段,我已将其分为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 用户的名称。

希望这是有意义的,任何帮助都将不胜感激!

1 个回复
最合适的回答,由SO网友:Kieran McClung 整理而成

虽然我还没有完全测试过它,但希望它能帮助您实现目标。。。

此处的基本搜索表单将加载site_url() 附加搜索查询字符串。您应该对此进行更改,以更好地反映您的站点布局,例如<?php site_url( \'search\' ); ?> (\'http://website.com/search\').

将结果页代码放在结果页模板中(基于上面的site\\u url()代码)。这将收集所有部分(输入),将它们转换为字符串,然后使用meta_query 参数

它的基本意思是“查找gc\\U编号等于搜索字符串的所有产品”。然后,您可以循环查看所有结果并输出所需的任何内容。

如果不是你想要的,或者你需要帮助,请在下面发表评论。

<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\';
}
?>

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post