将条件内容添加到单个POST类型模板

时间:2013-08-15 作者:scylderon

我设置了一个新的自定义帖子类型,它将是我们电子邮件新闻稿的在线副本所在的位置,就像任何基于网络的新闻稿存档一样。

我试图创建一个条件语句来添加到自定义帖子类型的single中。php模板,以便在最近的帖子中显示其他内容。

这样做的目的是,我们可以通过电子邮件向订阅者发送最新时事通讯的链接,供他们在网站上查看,其中包括内容上方和下方的相关广告和新闻。为什么?因为在不是最新发行的新闻稿上,广告和新闻是不相关的,不应该显示出来。

有没有办法查询我的单曲。php模板循环以仅显示此帖子类型中最近帖子的内容?

类似于:

if ( is_most_recent_post(\'post_type=newsletter\') ) {
  echo \'Content that shows up only in the most recent post in the Newsletter post type is output here.\';
}
我知道这个函数实际上并不存在。这是假设代码。我希望这是有意义的-提前感谢您的提示!

1 个回复
最合适的回答,由SO网友:sanchothefat 整理而成

首先,最好创建一个名为single-newsletter.php. WordPress将自动拾取并使用它。

其次,将此功能添加到functions.php 如果是最近的一次,请致电咨询:

function is_latest_newsletter( $post_id = 0 ) {
    $latest = array_shift( get_posts( array(
        \'post_type\' => \'newsletter\',
        \'posts_per_page\' => 1
    ) ) );

    if ( ! $post_id && in_the_loop() )
        $post_id = get_the_ID();

    return $latest->ID == $post_id;
}
然后在模板文件中:

if ( have_posts() ) : while ( have_posts() ) : the_post();

    if ( is_latest_newsletter() ) {
        // do stuff
    } 

endwhile; endif;
您还可以将特定的post ID传递给函数,以便它在其他上下文中也可用。

结束

相关推荐

remove a single post_meta

我创建了一个有多个元框的插件。一个元框通过使用update_post_meta(). 另一个元框通过使用add_post_meta(). 我没有在post\\u类型中打开修订。你会怎么做delete_post_meta() 元框中使用add_post_meta()? 需要最佳实践建议。如果你要把整个$post->ID 它将获取记录数组,如何检测特定的meta_key 是否设置为删除?以下是github上的代码:https://github.com/fritzdenim/stec-events/blo