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