WP本身是帶有置頂文章功能,可是好像只有默認主題能看出變化,如果自定義主題就看不出來,當然也可以自己在主題中提取某分類的最新置頂文章。
代碼如下:
<?php query_posts(array('cat'=>73,'posts_per_page' => 5,'post__in' => get_option('sticky_posts'),'caller_get_posts' => 1));?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<li><span class="grayz">·</span><a href="<?php the_permalink(); ?>" target="_blank" class="black "><?php echo cut_str($post->post_title,36); ?></a></li>
<?php endwhile;?>
<?php else:?>
<?php endif;wp_reset_query();?>
置頂文章功能引入於WordPress 2.7。在查詢中,被設為“置頂”的文章會顯示在其它文章之前,除非該文章已經被caller_get_posts=1參數排除。
返回第一篇置頂文章
$sticky=get_option('sticky_posts') ;
query_posts('p=' . $sticky[0]);
或
$args = array(
'posts_per_page' => 1,
'post__in' => get_option('sticky_posts'),
'caller_get_posts' => 1
);
query_posts($args);
返回第一篇置頂文章;若無,則不返回任何內容
$sticky = get_option('sticky_posts');
$args = array(
'posts_per_page' => 1,
'post__in' => $sticky,
'caller_get_posts' => 1
);
query_posts($args);
if($sticky[0]) {
// insert here your stuff...
}
從查詢中排除所有置頂文章
query_posts(array("post__not_in" =>get_option("sticky_posts")));
返回某一分類下所有文章,但不在文章列表上方顯示置頂文章。所有設為“置頂”的文章以正常順序(如日期順序)顯示
query_posts('caller_get_posts=1&posts_per_page=3&cat=6');
返回某一分類下所有文章,完全不顯示置頂文章,保留分頁
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$sticky=get_option('sticky_posts');
$args=array(
'cat'=>3,
'caller_get_posts'=>1,
'post__not_in' => $sticky,
'paged'=>$paged,
);
query_posts($args);
可是我做的是一個門戶網站,希望如果有置頂文章就顯示置頂文章,如果沒有的就顯示最新文章,如果有一部分置頂文章,就讓置頂文章顯示在最新文章前面,可是弄了大半天也沒有能實現這功能,谷歌也沒有找到。最後只能用WP-sticky插件了。將wp-sticky這個文章置頂插件上傳到根目錄下的wp-content/plugins目錄,然後去後台激活。激活後,需要對這個插件進行相關的設置,你可以設置文章置頂的方式、設置顯示的日期,你可以根據自己的需求進行適當的設置,設置完後當你發布新文章或更改文章時,就會在頁面的右下方出現一個“Post Sticky Status”的單選框,有三人選項:
Announcement:如果想長期置頂,就選這個選項
Sticky:如果只是當天置頂,就選這個選項
Normal:不置頂,如果想取消置頂,就選這個選項,默認這個選項
用了這個wp-sticky置頂插件,調整了提取分類文章的展示順序。同時會在標題前加上Announcement:或Sticky: