在WordPress中,原生是自带文章“在博客中置顶”这个功能选项的,但是我们在插件开发时如果自定义了文章的类型,那么这个按钮就无法显示,需要通过代码设置才能显示出来,下面我们记录一下具体的代码。
当前所使用主题的 functions.php 文件中
add_action( 'add_meta_boxes', 'jiloc_add_book_box' );
function jiloc_add_book_box(){
add_meta_box( 'jiloc_add_book_box', '自定义文章类型置顶', 'jiloc_sticky ', '自定义类型type', 'side', 'high' );
}
function jiloc_sticky (){ ?>
<input id="super-sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky() ); ?> /><label for="super-sticky" class="selectit">置顶本产品</label>
<?php
}
效果如下
主题中输出置顶文章代码
$sticky = get_option( 'sticky_posts' );
query_posts( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1 ) );
主题中输出非置顶文章代码
$sticky = get_option( 'sticky_posts' );
query_posts(array('ignore_sticky_posts' => 1,'post__not_in' => $sticky) );
不想把置顶文章和非置顶文章区分开来的话,直接把不输出置顶文章中的 ignore_sticky_posts 和 post__not_in 去掉即可正常输出,并且自动将置顶文章排在首位。
如果是正常输出文章让置顶文章自动置顶,那么我们很有必要在置顶文章标题后面或前面添加【置顶】标识,以便用户知道这是一篇置顶文章。方法也很简单,只需要在循环语句中的标题后面添加以下代码即可:
<?php if (is_sticky()) {?><span class="sticky-icon">置顶</span><?php } ?>
意思就是判定当前文章是否为置顶文章,是的话就输出置顶标识。