Wordpress-如何在模板中包含自定义帖子类型内容?

时间:2017-10-11 21:12:45

标签: php wordpress wordpress-theming

我正在使用自定义帖子类型,并让它显示在Wordpress管理区域中。这是我的函数代码的一部分:

//CUSTOM POST TYPE
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'slick_slider',
  array(
  'labels' => array(
    'name' => __( 'Main Slider' ),
    'singular_name' => __( 'Slider' )
  ),
  'public' => true,
  'has_archive' => true,
)
);
}

我的问题是我需要将这些自定义帖子类型插入到模板中。我已经尝试使用此代码来执行此操作:

 <?php if (have_posts()) : while (have_posts()) : the_post();?>
     <?php $slick_slider_values = get_post_meta( get_the_ID(), 'slick_slider' ); ?>
 <?php endwhile; endif; ?>

但它不起作用。知道我需要什么代码才能让CPT在模板页面中正确显示?

3 个答案:

答案 0 :(得分:1)

您正在使用自定义帖子类型,因此您需要执行自定义帖子类型循环:

<?php query_posts('post_type=slick_slider&posts_per_page=5'); if ( have_posts() ) while ( have_posts() ) : the_post();?>
// normal post stuff here ie <?php the_content(); ?>
<?php endwhile; wp_reset_query(); ?>

这超出了循环!希望有所帮助!

答案 1 :(得分:0)

这对你有用:

$args = array(
  'post_type'   => 'slick_slider',
  'post_status' => 'publish',
 );

$slick_slider = new WP_Query( $args );
if( $slick_slider->have_posts() ) :

      while( $slick_slider->have_posts() ) : $slick_slider->the_post();

            $slick_slider_values = get_post_meta( get_the_ID(), 'slick_slider' );

      endwhile;
endif;

答案 2 :(得分:0)

如果您想在单个帖子文件之外或页面模板之外显示任何帖子类型或帖子,则需要使用WP_Query。所以请改用以下代码。

$slider = new WP_Query(array(
             'post_type'   => 'slick_slider',
          ));
if( $slider->have_posts() ){
      while( $slider->have_posts() ) {
        $slider->the_post();
        $slider_meta = get_post_meta( get_the_ID(), 'slick_slider' );
    }
  wp_reset_postdata();
}

希望它会帮助你。