给 WordPress 自定义文章类型(Post Type)添加文章置顶功能选项

WordPress 默认的文章管理功能,已经内置了指定功能,不过设置起来不是很方便,在添加了自定义文章类型后也无法使用置顶功能,今天分享一下如何给 WordPress 自定义文章类型添加文章置顶功能。

添加置顶功能

将以下代码添加到主题根目录下的 functions.php 文件 <?php 标签之后:


/**
 * 给wordpress自定义文章类型添加文章置顶功能选项
 */
add_action( 'add_meta_boxes', 'add_product_box' );
function add_product_box(){
add_meta_box( 'product_sticky', '文章置顶', 'product_sticky', 'post', 'side', 'high' );
}
function product_sticky (){
?>
<ul>
<li style="margin-top:6px;">
<input id="super-sticky" name="sticky" type="checkbox" value="sticky" <?php checked( is_sticky() ); ?>/> <label for="super-sticky" class="selectit" style="vertical-align: top">置顶</label>
</li> 
</ul>
<?php }

修改第三行 add_meta_box() 里的 post 为自己的自定义文章类型即可,其余参数可以根据需要修改。

效果如下:

给 WordPress 自定义文章类型(Post Type)添加文章置顶功能选项

调用置顶文章

修改第四行的 post_type 的  post 为你的文章类型即可调用置顶文章

<?php
  $sticky = get_option('sticky_posts');           
  $args = array(
      'post_type'      => 'post', //文章类型
      'cat'            => 1, //分类 id
      'post__in'       => $sticky, //调用置顶文章
      'showposts'      => 10,//显示几篇文章
    );

  $custom_query = new WP_Query( $args ); ?>

  <?php if ( $custom_query->have_posts() ) : ?>
    <?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
   
            <article id="post-<?php the_ID(); ?>" <?php post_class('col-md-6'); ?> >
               

              <div class="text-box">
                  <h3 class="title">
                      <a href="<?php the_permalink();?>">
                        <?php the_title();?>
                      </a>
                  </h3>

                  <div class="text">

                    <div class="meta">
                        <span>
                            标签:<?php the_tags( false, ', ', '' ); ?>
                        </span>

                        <span>
                            分类:<?php the_category( '/', '', false ); ?>
                        </span>

                        <span>
                            时间:<?php the_time( 'Y-m-d' ); ?>
                        </span>

                        
                    </div>
                    
                      <p>
                          <?php echo mb_strimwidth(strip_tags(apply_filters('the_content', $post->post_content)), 0, 40,"..."); ?>
                      </p>
                  </div>
              </div>

              </article>
       
    <?php endwhile; ?>
  <?php wp_reset_postdata(); ?>

  <?php else:  ?>
    <article>抱歉,未发现文章</article>
<?php endif; ?>

准确成功率:95.9%

发表回复

后才能评论