WordPress 默认的置顶功能很好用,但是只能在默认的 「post」 中使用,如何在自定义文章类型中添加置顶功能呢?
注意:本篇教程的自定义文章类型置顶功能经测试仅首页有效。
要置顶自定义文章类型,首先得在首页中显示自定义文章类型的文章,比如企业站中注册了一个名为 product 的产品文章类型,首先将产品显示在首页,参考:WordPress 在首页显示或只显示自定义文章类型,或者在 functions.php 文件中加入下面代码,让首页只显示产品:
- function ashuwp_posts_per_page($query){
- if ( is_home() )
- $query->set( 'post_type', array( 'product' ) );
- return $query;
- }
- add_action('pre_get_posts','ashuwp_posts_per_page');
方法:在文章编辑页面添加自定义字段。不管使用什么方法,请在后台文章编辑页面添加一个复选框 checkbox,html 结构如下即可:
- <input id="super-sticky" name="sticky" type="checkbox" value="sticky" /><label for="super-sticky" class="selectit"> 置顶</label>
上面代码中 checkbox 的 name 和 value 必须为 sticky 。
阿树做好的效果如图:
如何添加此自定义字段?阿树提供两种方法:
一、使用阿树工作室提供的后台框架阿树工作室---主题后台框架 1.2
1. 阿树工作室提供的 checkbox 复选框是对应多个选项的,无法给 checkbox 使用一个固定的 name,得新增加一个专门用于显示置顶字段的项。
编辑框架的 meaboxclass.php 文件,在类 ashu_meta_box 中增加一个方法,可加载 checkbox 函数附近,代码如下:
- function sticky($ashu_meta) {
- $checked ="";
- if( is_sticky() )
- $checked = 'checked = "checked"';
- echo '<input id="'.$ashu_meta['id'].'" name="sticky" type="checkbox" value="sticky"'. $checked.' /> <label for="super-sticky" class="selectit">'.$ashu_meta['name'].'</label>';
- }
然后在框架的 config.php 文件中配置代码:
- /****product sticky******/
- $ashu_productinfo = array('title' => '置顶', 'id'=>'product_sticky', 'page'=>array('product'), 'context'=>'side', 'priority'=>'high', 'callback'=>'');
- $ashuwp_product_options[] = array(
- 'name' => '置顶本产品',
- 'id' => 'super-sticky',
- 'type' => 'sticky'
- );
- $$ashu_productinfo_box = new ashu_meta_box($ashuwp_product_options,$ashu_productinfo);
二、直接在 functions.php 文件中添加如下代码,新增自定义字段面板:
- add_action( 'add_meta_boxes', 'ashuwp_add_product_box' );
- function ashuwp_add_product_box(){
- add_meta_box( 'ashuwp_product_sticky', '置顶', 'ashuwp_product_sticky', 'product', 'side', 'high' );
- }
- function ashuwp_product_sticky (){ ?>
- <input id="super-sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky() ); ?> /><label for="super-sticky" class="selectit"> 置顶本产品</label>
- <?php
- }
添加完自定义面板,置顶功能即可用。