在WordPress中只搜索3个自定义域的正确方式是什么?

时间:2020-02-24 作者:user1671951

我有三个自定义字段(不使用ACF)。我希望搜索表单在以下位置搜索匹配项:

  • \\u cth\\u featured\\u zip\\u code\\u 1

  • \\u cth\\u featured\\u zip\\u code\\u 2

  • \\u cth\\u featured\\u zip\\u code\\u 3

    这是我写的问题:

    $wpdb->prepare(
                    " LEFT JOIN $wpdb->postmeta AS laddress_meta ON laddress_meta.post_id = {$wpdb->posts}.ID AND laddress_meta.meta_key = %s",
                    \'_cth_featured_zip_code_1\',\'_cth_featured_zip_code_2\',\'_cth_featured_zip_code_3\'                
                );
    
    我想得对吗?i、 这个语句是否完成了加入post元表并要求它仅从该表中搜索那些字段的任务?

    当我进行测试时,我得到的似乎都是与列出的第一个自定义字段匹配的结果。当我在尝试包含其他两个字段的同时尝试添加另一个“AND”或“or”条件时,这会在站点上导致严重错误。

    除了第一个自定义字段外,查询其他两个自定义字段的正确方法是什么?我是否应该使用其他操作员?我花了一上午的大部分时间来弄清楚连接件——我在这里挂断了。

    如果能在正确的方向上得到任何轻微的确认,我们将不胜感激。

1 个回复
SO网友:parvez noor

是否使用高级自定义字段?(ACF?)。

Relevanssi是一个非常好的插件,它增加了核心WordPress搜索的范围。

以下是链接:https://wordpress.org/plugins/relevanssi/

它允许用户通过附加到其上的ACF字段搜索帖子。

安装插件后,可以在函数中使用以下代码。php文件,用于指示搜索显示与元值匹配的帖子。

function rlv_relationship_content( $content, $post ) {
    // Fetching the post data by the relationship field.
    $relationships = get_post_meta( $post->ID, \'_cth_featured_zip_code_1\', true );

    if ( ! is_array( $relationships ) ) {
        $relationships = array( $relationships );
    }

    foreach ( $relationships as $related_post ) {
        $content .= \' \' . get_the_title( $related_post );
    }

    return $content;
}
add_filter( \'relevanssi_content_to_index\', \'rlv_relationship_content\', 10, 2 );