wordpress - 按自定义字段过滤 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;
}`
解决方案
我解决了我分享它如果它帮助别人
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;
}
?>
推荐阅读
- python - MyClass.attr VS type(self).attr VS 单独的@classmethod
- mongodb - mongodb 中的 findOneAndUpdate 只返回更新的值
- c++ - 具有数据成员语法的零成本属性
- excel - Excel 问题:如何在嵌套的 if 语句中实现索引匹配?
- html - 如何根据元素数量设置元素宽度?
- android - 为什么按钮浮动在 RecyclerView 之上?
- php - 在哪里放置 MD5 功能使其工作?
- php - Laravel 5.7:在视图中生成嵌套 url 的最简洁方法
- python - Revit API 收集器:无法将值:空格转换为 target_type:
- php - Laravel 5.7 SQLSTATE[HY000] [2002] 无法建立连接