制作wordpress主題的時(shí)候經(jīng)常會(huì)用到query_posts()函數(shù),通過(guò)它可以實(shí)現(xiàn)各種特殊的要求,如獲得特定的文章日志、排除某一分類(lèi)等即query_posts() 函數(shù)可以用來(lái)控制在主循環(huán)(Loop)中顯示特定的日志??赡芎芏嗳藢?duì)主循環(huán)不太理解,那么就舉個(gè)栗子吧:
首頁(yè)、存檔頁(yè)的這些文章都是在主循環(huán)中的。在不使用query_posts()函數(shù)控制的情況,首頁(yè)、存檔頁(yè)等都是按照文章的發(fā)布時(shí)間列出你博客上所有已發(fā)布的文章,而如果你想控制哪些文章可以顯示,哪些文章不顯示,文章按照什么樣的方法排序等,那么你就要用到query_posts()函數(shù)了。
使用此函數(shù)要做的就是在index.php或者其他模板文件中查找if (have_posts())
或while (have_posts())
,在前面添加query_posts
函數(shù)即可。不過(guò)以上方式可能會(huì)導(dǎo)致首頁(yè)無(wú)法分頁(yè),可以將query_posts
函數(shù)改成這樣的行式,詳細(xì)代碼如下
<?php
$args = array(
'cat' => 1,
'category_name' => 'wpfunc'
);
$args = array_merge($args, $wp_query->query); //這一行代碼是必須的,不然不能分頁(yè)
query_posts($args);
if( have_posts() ){
while( have_posts() ){
//獲取下一篇文章的信息,并且將信息存入全局變量 $post 中
the_post();
}
}?>
語(yǔ)法結(jié)構(gòu)
<?php query_posts(‘cat=4′); ?> //只設(shè)置一個(gè)循環(huán)條件,顯示類(lèi)別ID為4的文章
<?php query_posts(array( 'cat' => 1, 'category_name' => wpfunc ) ); ?> //設(shè)置多個(gè)循環(huán)條件
參數(shù)
cat:根據(jù)ID顯示類(lèi)別,多個(gè)分類(lèi)用英文逗號(hào)隔開(kāi),ID前加負(fù)號(hào)’-‘表示排除該分類(lèi)
category_name:根據(jù)別名顯示類(lèi)別,輸出屬于某個(gè)類(lèi)別名的文章
tag:顯示與某個(gè)標(biāo)簽相關(guān)的文章,輸出某個(gè)標(biāo)簽的文章
posts_per_page:顯示的文章數(shù)目,-1這個(gè)值,會(huì)顯示所有的文章
author_name:根據(jù)作者顯示文章數(shù)目
showposts:顯示的文章數(shù)量
order:按時(shí)間順序顯示文章,包括ASC 和DESC(默認(rèn))
post_type:根據(jù)文章形式來(lái)顯示文章
實(shí)例
cat
用法:<?php query_posts(‘cat=4′); ?>
category_name
用法:<?php query_posts(‘category_name=wpfunc’); ?>
tag
用法:<?php query_posts(‘tag=wordpress’); ?>
獲得擁有任何這樣的標(biāo)簽的文章(可以是擁有一個(gè)標(biāo)簽也可以是多個(gè)標(biāo)簽同時(shí)擁有)
<?php query_posts(‘tag=wordpress,php’); ?>
獲取擁有這三個(gè)標(biāo)簽的文章
<?php query_posts(‘tag=wordpress+php+mysql’);? ?>
posts_per_page
<?php query_posts(‘posts_per_page=10’);? ?>
author_name
<?php query_posts(‘a(chǎn)uthor_name=許小珂’);? ?>
orderby
orderby=author
orderby=date
orderby=category
orderby=title
orderby=modified
orderby=modified
orderby=menu_order
orderby=parent
orderby=ID
showposts
<?php query_posts(‘showposts=5’);? ?>
TIPS
使用該函數(shù)后,要以wp_reset_query()函數(shù)結(jié)束,wp_reset_query()函數(shù)詳情請(qǐng)看wp_reset_query函數(shù)