【问题标题】:WordPress include custom field in searchWordPress 在搜索中包含自定义字段
【发布时间】:2019-05-31 09:27:32
【问题描述】:

我在 WordPress 中有一个自定义帖子类型 post_type_1,我在该帖子类型中也有一个自定义字段 custom_field_data

我正在通过使用wp_query 查询帖子来搜索apples,就像这样......

$search_term = 'apples';

$args = array(
    'post_type'      => array('post_type_1'),
    'post_status'    => array('publish'),
    'posts_per_page' => -1,
    's'              => sanitize_text_field( $search_term)
);

$results= new WP_Query( $args );

这可以正常工作并返回标题中带有apples 的所有帖子,但我还想将搜索扩展到自定义字段custom_field_data,因此查询将返回标题或自定义中带有apples 的所有帖子字段。

我最好的方法是什么?我曾尝试使用 meta_query,但没有成功。有人举个例子吗?

【问题讨论】:

  • 如果您使用meta_query,您只会收到自定义字段值为apples 的帖子,这将排除标题中包含apples 但没有匹配的自定义字段值的结果。您可以通过运行两个查询来实现这一点,一个用于搜索,另一个用于自定义字段,并将结果推送到数组中并仅打印唯一结果。不是最好的解决方案,但可以让您立即工作。

标签: wordpress


【解决方案1】:

使用下面的代码将适用于custom field search

$custom_field = $_GET['custom_field '] != '' ? $_GET['custom_field '] : '';
$search_term = 'apples';

$args = array(
    'post_type'      => array('post_type_1'),
    'post_status'    => array('publish'),
    'posts_per_page' => -1,
    's'              => sanitize_text_field( $search_term),
    'meta_query'    =>  array(
                          array(
                                'key'     => 'custom_field_key', 
                                'value'   => $custom_field ,
                                'compare' => 'LIKE', 
                                ),
                            )
    );
$results= new WP_Query( $args );

经过测试并且运行良好。

【讨论】:

    猜你喜欢
    • 2019-04-11
    • 2015-12-20
    • 2018-09-04
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多