首页 > 解决方案 > 按自定义字段过滤 WordPress

问题描述

我想按自定义字段类型搜索帖子。我现在有自定义字段“国家”和自定义帖子类型 umrahpackage,如果访问者搜索国家“abc”,它应该显示所有带有 abc 国家的帖子。

这是我的代码,但不工作。`

  add_shortcode('user_search','My_User_search');
  function My_User_search($atts = null)
         {
          $out = user_search_form();
 
 
 $args = array(
    'post_type' => 'umrahpackage',
    'meta_query' => array(
        array(
            'key'     => 'country',
            'value'   => 'pakistan',
            'compare' => 'LIKE',
        ))

        );

      $the_query = new WP_Query( $args );
       if( $the_query->have_posts() ):
        while( $the_query->have_posts() ) : $the_query->the_post();
         $out .= '<li>' . get_the_title() . '</li>';
       endwhile;
      endif;    
       return $out;
    }
    //function to display user search form
    function user_search_form(){
     $metavalue = $metakey = '';
      if (isset($_GET['search_by'])){
        $metakey = $_GET['search_by'];
     }
if (isset($_GET['s_value'])){
    $metavalue = $_GET['s_value'];
}

$re = '<div class="user_search"><form action="" name="user_s" method="get">
    <label for="search_by">Search by:</label>
        
        
        
<select id="search_by" name="search_by">';
if ($metakey != ''){
    $re.= '"';
    $re.= ($metakey == "country") ;
   
}else{
    $re .= '
        <option value="country">Comapny Name</option>';
}
$re .= '
 </select>
        <label>Company Name</label>
        <input id="s_value" name="s_value" type="text" value="'.$metavalue.'"/>
        <input type="hidden" id="user_search" name="post_type" value="umrahpackage" /> 
        
        <input id="submit" type="submit" value="Search" />
    </form></div>';
    return $re;
 }`

标签: wordpress

解决方案


我解决了我分享它如果它帮助别人

add_shortcode('user_search','My_User_search');
function My_User_search($atts = null){
$out = user_search_form();
$args = array('post_type' => 'umrahpackage','order' => 'asc', 
            'meta_query' => array(
              array(
                  'key' => 'country',
                  'value' => $_GET['s_value'],
                  'compare' => 'Like',
                  )
              )
          );
    $the_query = new WP_Query( $args );
    if( $the_query->have_posts() ):
        while( $the_query->have_posts() ) : $the_query->the_post();
        
          if($_GET['s_value']==''){
            //before search hide the posts 
          }
          else {
            $out .= '<li>' . get_the_title() . '</li>';
          }  
        endwhile;
    endif;    
return $out;
  }

   function user_search_form(){
   
  $re = '<div class="user_search"><form action="" name="user_s" method="get">
    <label for="search_by">Search by:</label>
    <div id="search_by" name="search_by">';

$re .= '
        <label>Company Name</label>
        <input id="s_value" name="s_value" type="text" value="'.$metavalue.'"/>
       
        <input name="user_search" id="user_search" type="hidden" value="umrahpackage"/>
        <input id="submit" type="submit" value="Search" />
    </form></div>';
   return $re;
     }

    ?>

推荐阅读