如果最近更新过类,则添加要发布的类

时间:2014-08-25 作者:Paul Brown

我试图在帖子标题后添加“最近更新”。我发现了一些有效的代码,但由于插件和一些主题编码,它会影响the_title 不应该。这个问题在这里讨论https://pippinsplugins.com/use-the_title-and-the_title_attribute-correctly/ - 我已经做了一些更正/修复,但有些插件超出了我的能力。

现有代码(信用http://www.themesandco.com/snippet/adding-an-update-status-to-posts-in-wordpress/) 是

// add label to updated posts
add_filter(\'the_title\' , \'skips_add_update_status\');
function skips_add_update_status($html) {
//First checks if we are in the loop and we are not displaying a page
if ( ! in_the_loop() || is_page() )
    return $html;

//Instantiates the different date objects
$created = new DateTime( get_the_date(\'Y-m-d g:i:s\') );
$updated = new DateTime( get_the_modified_date(\'Y-m-d g:i:s\') );
$current = new DateTime( date(\'Y-m-d g:i:s\') );

//Creates the date_diff objects from dates
$created_to_updated = date_diff($created , $updated);
$updated_to_today = date_diff($updated, $current);

//Checks if the post has been updated since its creation
$has_been_updated = ( $created_to_updated -> s > 0 || $created_to_updated -> i > 0 ) ? true : false;

//Checks if the last update is less than n days old. (replace n by your own value)
$has_recent_update = ( $has_been_updated && $updated_to_today -> days < 14 ) ? true : false;

//Adds HTML after the title
$recent_update = $has_recent_update ? \'<span class="label label-default">Recently updated</span>\' : \'\';

//Returns the modified title
return $html.\'&nbsp;\'.$recent_update;
}
我想通过使用post_class 然后,我将使用CSS以帖子标题为目标,并添加一个伪元素。我的问题是我不确定如何调整代码以插入。。。

$classes[] = \'update\';
return $classes;
大概是代替//adds html... 现行法规的后续章节。

有人能帮忙吗?

这是我的起始代码,但它为所有帖子添加了“更新”类,而不仅仅是过去14天更新的帖子,我想这是因为没有与逻辑计算相关的链接。如果有更好的替代方法,我愿意接受。

function skips_add_update_status($classes) {

//Instantiates the different date objects
$created = new DateTime( get_the_date(\'Y-m-d g:i:s\') );
$updated = new DateTime( get_the_modified_date(\'Y-m-d g:i:s\') );
$current = new DateTime( date(\'Y-m-d g:i:s\') );

//Creates the date_diff objects from dates
$created_to_updated = date_diff($created , $updated);
$updated_to_today = date_diff($updated, $current);

//Checks if the post has been updated since its creation
$has_been_updated = ( $created_to_updated -> s > 0 || $created_to_updated -> i > 0 ) ? true : false;

//Checks if the last update is less than n days old. (replace n by your own value)
$has_recent_update = ( $has_been_updated && $updated_to_today -> days < 14 ) ? true : false;

//add update class
$classes[] = \'update\';

return $classes;
}
add_filter(\'post_class\' , \'skips_add_update_status\');

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

你说得对。您的代码没有使用任何逻辑来确定是否添加CSS类。尝试以下操作:

function skips_add_update_status($classes) {

    //Instantiates the different date objects
    $created = new DateTime( get_the_date(\'Y-m-d g:i:s\') );
    $updated = new DateTime( get_the_modified_date(\'Y-m-d g:i:s\') );
    $current = new DateTime( date(\'Y-m-d g:i:s\') );

    //Creates the date_diff objects from dates
    $created_to_updated = date_diff($created , $updated);
    $updated_to_today = date_diff($updated, $current);

    //Checks if the post has been updated since its creation
    $has_been_updated = ( $created_to_updated -> s > 0 || $created_to_updated -> i > 0 ) ? true : false;

    //Checks if the last update is less than n days old. (replace n by your own value)
    $has_recent_update = ( $has_been_updated && $updated_to_today -> days < 14 ) ? true : false;

    // check whether $has_recent_update is true
    if( $has_recent_update ) {
        //add update class
        $classes[] = \'update\';
    }

    return $classes;

}
add_filter(\'post_class\' , \'skips_add_update_status\');
我删除了是否更新过的检查,因为您似乎没有使用它。

在此基础上,我认为注意最近的帖子比内容更具代表性。因此,您可以使用CSS完成全部工作。使用一些虚构的类,因为我不知道HTML是什么样子,可能是这样的:

.update .post-title:before {
    content: "[Updated!]";
}
根据您的造型要求,您可能需要一些更别致的东西:

.update .post-title:before {
    content: "[Updated!]";
    display: inline-block;
    padding: 2px;
    background-color: red;
    color: white;
}

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'