如何在发布中添加正确的上次更新(The_Modified_Time)

时间:2013-06-20 作者:Charles

在以下方面几乎没有问题:

我们希望在对现有帖子进行重要更正或添加其他文本/图像后添加“上次更新”
使用以下代码(硬编码)几乎可以满足我的要求:

<span style="font-size:85%">Last update <u><time datetime="<?php the_modified_time(\'d-m-y\'); ?>"> <?php the_modified_time(\'l  j  F, Y\'); ?></time></u></span>
但这样做的结果是——总是——显示所谓的“最后一次更新”,即使它刚刚发布,根本没有更新
我们很乐意这样做,这样它只会在真正完成一些更新时才会显示出来,最好是作为插件
所以我肯定做错了什么,有可能吗?如果有,怎么做?

注意:
它用于帖子中的前端,而不是侧边栏中的小部件,也不用于后端

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

你可以比较一下post_datepost_modified 只有当内容不匹配时才回显。

// inside a Loop
if ($post->post_date != $post->post_modified) { ?>
  <span style="font-size:85%">Last update <u><time datetime="<?php the_modified_time(\'d-m-y\'); ?>"> <?php the_modified_time(\'l  j  F, Y\'); ?></time></u></span><?php
}
但是,如果您想要“重要”更新,则需要确定哪些内容是重要的,并保存您自己的数据。WordPress将使用任何更新来更新“上次修改的”值,无论更新多么微不足道。类似这样:

function save_non_trivial_edit_date_wpse_103622($pid) {
  if (
    (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) 
    || (defined(\'DOING_AJAX\') && DOING_AJAX) 
    || isset($_REQUEST[\'bulk_edit\'])
  ) {
    return;
  } else {
    update_post_meta($pid,\'_sig_update_date\',time());
  }
}
add_action(\'save_post\', \'save_non_trivial_edit_date_wpse_103622\');
您可以通过以下方式检索:

// in the Loop
$sig_update = get_post_meta($post->ID,\'_sig_update_date\',true); ?>
<span style="font-size:85%">Last update <u><time datetime="<?php echo date(\'d-m-y\',$sig_update); ?>"> <?php echo date(\'d-m-y\',$sig_update); ?></time></u></span><?php
即使这是一个相当微不足道的“重大更新”跟踪程序。您只需保存即可更改更新,即使未更改任何内容。为了做得更好,您必须开始比较修订字数(或其他内容)。你必须仔细思考,找出什么是“重要的”。

SO网友:Jen

您可以在上次修改的时间和原始创建的时间之间添加比较,并且仅当它们不同时才显示上次修改的时间。类似这样:

<?php if ( $post->post_date != $post->post_modified ) : ?>
<span style="font-size:85%">
  Last update 
  <u>
    <time datetime="<?php the_modified_time(\'d-m-y\'); ?>">
      <?php the_modified_time(\'l  j  F, Y\'); ?>
    </time>
  </u>
</span>
<?php endif; ?>

结束

相关推荐

Posting to loop.php file

我正在尝试发布到循环。php模板文件,但由于某种原因,它不会通过,通常它应该可以工作,但它不是。有没有其他方法来完成这项工作?这是我索引中的内容。主题的php文件。$(\'.load_more_cont a\').live(\'click\', function(e) { leftwrapper = \'THIS IS WORKING\'; $.ajax({ url: \"<?php blogin