言歸正傳,實(shí)現(xiàn)文章多重過(guò)濾的核心函數(shù)是(),基于PHP,直接看官方文檔應(yīng)該可以解決標(biāo)題中提到的多重過(guò)濾功能。效果圖示例:
下面我將做一些簡(jiǎn)單的介紹:
假設(shè)文章有一個(gè)自定義字段:area存儲(chǔ)區(qū)域信息,比如重慶,比如北京等。另外一個(gè)字段是type,存儲(chǔ)類型。
// 分類
if(isset($_GET['cat'])) {
$cat_name=$_GET['cat'];
}
// 標(biāo)簽
if(isset($_GET['tag']) ){
$tag=$_GET['tag'];
}
// 自定義字段:area
if(isset($_GET['area']) ){
$array_temp = array('key' => 'area', 'value'=>$_GET['area'], 'compare'=>'=');
array_push($metaArray,$array_temp);
}
// 自定義字段:type
if(isset($_GET['type']) ){
$array_temp = array('key' => 'type', 'value'=>$_GET['type'], 'compare'=>'=');
array_push($metaArray,$array_temp);
}
//正反順序
if(isset($_GET['order'])){
$order=$_GET['order'];
}
else $order = 'DESC';
//默認(rèn)按時(shí)間排序
$orderby='date';
//如果用戶設(shè)置了按文章特定字段價(jià)排序
if(isset($_GET['orderby'])){
if($_GET['orderby'] == 'views'){
$array_temp = array('key' => 'views');
array_push($metaArray,$array_temp);
$orderby='meta_value_num';
}
else $orderby = $_GET['orderby']; //否則按wp自帶排序字段
}
//獲取上述參數(shù),組成查詢條件
$args = array(
'meta_query' => $metaArray,
'category_name' = >$cat_name,
'tag'= $tag_name,
'order' => $order,//DESC,
'orderby' => $orderby,
);
//查詢文章
$query = new WP_Query( $args );
輸出:
have_posts()) : $query->the_post(); ?>
我這里只設(shè)置了輸出標(biāo)題。這才是重點(diǎn)。通過(guò)以上代碼wordpress網(wǎng)站建設(shè),可以實(shí)現(xiàn)標(biāo)簽、分類、區(qū)域和類型四種條件的多重篩選。
$_GET['cat'])
這里指的是從URL獲取的值,比如
?area=重慶&cat=food&tag=good&type=xxx&=
獲取的文章來(lái)自重慶地區(qū)wordpress 分類 文章數(shù),分類為食物,標(biāo)注為好,輸入為xxxxwordpress 分類 文章數(shù),按修改時(shí)間排序。
為了方便點(diǎn)擊自動(dòng)生成上述鏈接,您可能需要了解:()和()這兩個(gè)函數(shù)。如果多個(gè)過(guò)濾器需要分頁(yè)wordpress建站,你可能需要 WP-this 插件與上面的代碼一起使用
(數(shù)組('query' => $query));
以上方法是實(shí)現(xiàn)多重篩選的最佳方式,因?yàn)槎际峭ㄟ^(guò)官方提供的函數(shù)來(lái)實(shí)現(xiàn)的。網(wǎng)上還有其他的方法,比如通過(guò)多個(gè)標(biāo)簽等,但是如果遇到需要自定義字段的區(qū)間過(guò)濾,就會(huì)停下來(lái)。
文章來(lái)自互聯(lián)網(wǎng),侵權(quán)請(qǐng)聯(lián)系刪除,文章闡述觀點(diǎn)來(lái)自文章出處,并不代表本站觀點(diǎn)。
www.bjcthy.com