仅使用特定元字段进行搜索(不包括帖子标题和内容)

时间:2016-08-21 作者:mukto90

我有一个自定义的帖子类型my_cpt 有9个自定义元字段,如first_name, last_name, location, phone, email 以及帖子标题和帖子内容。现在我想要的是使用first_namelast_name 仅限字段。

查看此示例帖子-

帖子标题:新玩家(WP editor的帖子标题字段)描述:Lorem ipsum dolor sit(WP editor的帖子内容字段)

  • 名字:John(自定义元)
  • 姓氏:Doe(自定义元)
  • 电话:123466789(自定义元)
  • 电子邮件:[email protected](自定义元)
  • 位置:LA(自定义元)
    • 如果有人搜索

      球员,他没有得到任何结果

    • Lorem,未获得任何结果
    • 约翰,他创建了这个职位,什么都得不到

    1 个回复
    SO网友:alxndrbauer

    您可以使用WP_Query 为此:

    $query = new WP_Query( array( \'post_type\' => \'my_cpt\' ) );
    
    这将只查询my\\u cpt类型的帖子。

    要仅搜索具有特定名字或姓氏的帖子,必须扩展查询。为此,需要添加字段meta_query:

    $query = new WP_Query( array( 
                          \'post_type\' => \'my_cpt\' ),
                          \'meta_query\' => array(
                             \'relation\' => \'OR\', //defaults to AND
                              array(
                                 \'meta_key\' => \'first_name\',
                                 \'meta_value\' => $search_string,
                                 \'compare\' => \'LIKE\'
                              ),
                              array(
                                 \'meta_key\' => \'last_name\',
                                 \'meta_value\' => $search_string,
                                 \'compare\' => \'LIKE\'
                              )
                           ));
    
    要使用此查询,您可能需要一个自定义搜索表单,从中可以更改搜索参数s 大概是search_my_cpt.

    完成此操作后,您需要编辑search.php // this is where the results are displayed:

    您需要添加以下内容:

    if( isset($_GET[\'search_my_cpt\'])) {
    //your new query
    //display your search results
    }
    
    我没有测试这段代码,但这将使您非常接近您想要实现的目标

    相关推荐