新帖子标签类别为“new”

时间:2013-04-07 作者:Tom

我有3种不同的自定义帖子类型,每种类型都构成了我的主要导航。当我在其中一个类别下发布新内容时,我希望nav中的该类别在有限的时间内(例如7天)标记“新”标签。

我找到了一些关于如何将其应用于单个帖子的不错的帖子,但我不知道如何将其应用于顶部导航中的多个类别。

如果有任何用途,单岗位代码如下:

function newly_posted() {
    global $post;
    $now = date(\'U\'); $published = get_the_time(\'U\');
    $new = false;
    if ( $now-$published <= 3*24*60*60 ) $new = true;
    return $new;
}
任何帮助都将不胜感激!

EDIT: 正如评论中提到的,我基本上是在寻找一些可以做到的事情:If post type X has new post within 7 days, add class "new"

3 个回复
SO网友:Tom

如果将来还有其他人在寻找,那么最好的方法就是使用wp_get_recent_posts 作用有人举了一个对我很有用的例子:

<?php $args = array( \'numberposts\' => \'1\' );
$recent_post = wp_get_recent_posts( $args );

if (strtotime($recent_post[0][\'post_date\']) > strtotime(\'-7 days\'))
    $class = "new!";
?>

SO网友:Hadi77

如果你知道一些PHP和一些WP函数,这就很容易了。如果您有自己的手写导航菜单,那么它将更容易实现。

您似乎了解PHP,因此可以使用此函数检查帖子类型:

function does_posttype_have_new_post($post_type=\'post\', $days = 7){
    $posts = get_posts(\'posts_per_page=1&post_type=\'.$post_type);
    $post_date = date_create($posts[0]->post_date);
    return intval(date_diff($post_date,date_create(),true)->format("%R%a")) <= $days;
}
你可以像这样使用它does_posttype_have_new_post(\'book\') 检查是否book post type本周有任何新帖子。通过传递第二个参数,可以更改天数的范围。将其用作IF条件,如:
if(does_posttype_have_new_post(\'book\')) echo \'New!\';

或应用filter 并使用此功能检查帖子类型中的帖子


EDIT: 我又读了一遍这个问题,似乎您想将其应用于动态导航菜单(在WP 3.0中添加),这是非常非常困难的方法
您将使用挂钩和过滤器
您必须首先解析HTML(使用Regex或类似SimpleHTML的东西),查看页面链接到哪里,然后检查post类型中的帖子,添加类并返回过滤后的内容<这很费时,但如果您不想触碰主题代码并保持其干净,可以这样做<我的建议是:如果你不经常更改菜单,那么就使用静态菜单,并以简单的方式完成。

SO网友:djboris

在我看来,更好的方法是使用瞬态。这样,我们就不会在每次刷新页面时查询数据库中的每种帖子类型。

简单挂钩即可:

add_action( \'wp_insert_post\', \'wpse94916_set_new_flag\', 10, 3 );
function wpse94916_set_new_flag( $post_id, $post, $update ) {
    if ( $update ) {
        return;
    }
    set_transient( \'is_new_\' . $post->post_type, true, WEEK_IN_SECONDS );
}
这将在每次新的post保存时设置/更新瞬态。然后要使用它,只需添加一个简单的检查:

$post_type = \'post_type\';
$class = get_transient( \'is_new_\' . $post_type ) ? \'new!\' : \'\';

结束

相关推荐

Thesis -style Navigation

我正在研究一个主题,我希望用户能够像论文一样选择要在主题选项页面中显示的页面。我已经在谷歌上搜索了几个小时的逆向工程论文,但还没有找到一个很好的解决方案。我想知道是否有人做过这件事或看过教程。