从自定义帖子类型显示单个帖子

时间:2014-05-13 09:46:11

标签: php wordpress custom-post-type

我正在使用下面的插件和设置。我在显示自定义帖子类型时遇到一些问题。我专注于打印机自定义帖子类型。我让它们显示在自定义分类法部分下,并创建了4个分类法(制造商),这样就可以了。 (http://developmentscene.co/CKH/printers/

问题
当我点击上面页面上的帖子时,它会显示该类别中的所有帖子。我只是希望它显示您点击的链接的帖子,只显示该帖子。我尝试使用(' posts_per_page' => 1),但这段代码只是为我在类别页面中点击的每个帖子显示相同的第一篇文章。

我的理想解决方案
所以我在脑海里想的只是说只显示一个帖子,其中包含您之前在该类别中点击的链接的ID。我不知道这是不是最好的方法,但我把代码放在下面。

<?php get_header(); ?>

<div id="wrap" class="container">

    <section id="content" class="primary" role="main">

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <?php endwhile; ?>
    <?php endif; ?>

    <?php $printers = new WP_Query(array(
        'post_type' => 'printers',
        'posts_per_page' => 1,
    )); ?>

    <?php while($printers->have_posts()) : $printers->the_post(the_ID()); ?>

    <h2 class="post-title" style="color:#333;" ><?php the_title(); ?> - <?php echo the_ID();?></h2>
    <hr >

    <p><?php the_content(); ?></p>
    <p>&nbsp;</p>
    <?php the_post_thumbnail(); ?>
    <br />


    </section>

    <section id="sidebar" class="secondary clearfix" role="complementary">


    <h3 class="widgettitle" ><b>Features and Benefits</b></h3>


    <?php $benefits = get_field( "features-and-benefits" ); 
       if($benefits){
        echo '<table cellspacing="0" cellpadding="0"><tbody>' ;
            foreach($benefits as $benefits){
                echo '<tr><td><p>' . $benefits['features'] . '</p></td></tr>' ;
            }

        echo '</tbody></table>';
       }

    ?>
    <br />

    <h3 class="widgettitle" ><b>More Information</b></h3>

    <?php $specifications = get_field( "specifications" );; 
       if($specifications){
        echo '<table cellspacing="0" cellpadding="0"><tbody>' ;
            foreach($specifications as $specifications){
                echo '<tr><td><p>' . '<a target="_blank" href="http://' . $specifications['link'] . '/">' . $specifications['details'] . '</a></p></td></tr>' ;
            }

        echo '</tbody></table>';
       }

    ?>

    </section>

    <?php endwhile; ?>



</div>

<?php get_footer(); ?>

设置

使用的插件:
*自定义字段
*自定义帖子类型UI

我也将永久链接设置为postname。

1 个答案:

答案 0 :(得分:0)

你在这里运行两个循环,这引起了所有的挫折。我相信你为你的特定需求添加了第二个循环,所以你可以简单地删除第一个循环,就是这个部分

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <?php endwhile; ?>
    <?php endif; ?>