WordPress 插件开发 自定义文章类型 置顶

在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 } ?>

意思就是判定当前文章是否为置顶文章,是的话就输出置顶标识。

腾讯云限时秒杀【点击购买】

CN2高速线路,1GB带宽,电信联通优化KVM,延迟低,速度快,建站稳定,搬瓦工BandwagonHost VPS优惠码BWH26FXH3HIQ,支持<支付宝> 【点击购买】!

$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

阿里云香港、新加坡/1核/1G/25G SSD/1T流量/30M带宽/年付¥288【点击购买】

发表评论

邮箱地址不会被公开。 必填项已用*标注