检查草稿是否已从发布移至草稿

时间:2013-07-29 作者:Dan

我正在编写一个插件,部分功能在hook上运行:publish\\u to\\u draft

然后,我想重新发布这篇文章,并触发特定的功能,以查看它之前是否已经发布过。

i、 e.草稿到发布

现在,虽然我已经具备了这方面的功能,但我无法区分只是要发布的草稿的帖子与之前发布的已移回草稿的帖子之间的区别。

这很重要,因为它用于集成,我需要在该操作上运行该功能。

我可以为此使用\\u date()吗?

切尔斯丹

2 个回复
SO网友:Biranit Goren

据我所知,你不会得到任何之前发布过帖子的迹象,因为wordpress只记得新旧转换。

我建议您添加一些元数据,即使用add_action(\'publish_post\', \'your_function\') (或类似)执行update_post_meta($post->ID, \'post_published\', \'on\').

这样,每篇文章在发布时都会得到一个指标,然后您可以使用该条件if (get_post_meta($post->ID, \'post_published\', true)==\'on\') 在“draft\\u to\\u publish”操作中。

SO网友:bueltge

钩子publish_post如果发布的帖子被更新,也会被解雇。使用挂钩transition_post_status 提示一下,如果发布了帖子。钩子有参数。action transition\\u post\\u状态(定义见http://codex.wordpress.org/Post_Status_Transitions) 发送三个参数,$new_status, $old_status, $post.

add_action( \'transition_post_status\', \'your_function\', 10, 3 );
function your_function( $new_status, $old_status, $post ) {

   if ( \'draft\' === $old_status && \'publish\' ==== $new_status ) {
      // your todos
   }
}
另外,WordPress还有一个钩子,用于从状态更改为另一个状态,这也是一个示例。

add_action( \'draft_to_publish\', \'your_callback\' );
function your_callback() {
    // Code here
}
另请参见this codex page 本主题和示例。

结束

相关推荐

setlocale for date

因此,我购买了一个高级wordpress主题,但我无法完成其波兰语本地化-时间或日期以外的日期显示为英语(默认服务器语言)。我读到我必须使用setlocale(LC\\u ALL,“pl\\u pl”);但我不知道它应该包含在哪个文件或哪里,以及/或者我是否需要更多。以下是显示英文日期的代码摘录:$event_date = get_post_meta(get_the_ID(), \'event_date\'); $event_from_time = get_post_meta(get_the_ID