wp_check_for_changed_dates

函数
wp_check_for_changed_dates ( $post_id, $post, $post_before )
参数
  • (int) $post_id Post ID.
    Required:
  • (WP_Post) $post The post object.
    Required:
  • (WP_Post) $post_before The previous post object.
    Required:
定义位置
相关方法
wp_check_for_changed_slugswp_check_locked_postswp_check_filetype_and_extwp_checkdatewp_check_filetype
引入
4.9.3
弃用
-

wp_check_for_changed_dates: 这是一个检查文章或页面中更改日期的函数。如果有任何改变,它可以用来更新文章或页面的修改日期。

检查已发布的文章对象的更改日期,并保存旧日期。

当任何类型的文章对象被更新时,通过比较当前和之前的文章对象,该函数被使用。

如果日期被改变,并且还没有成为旧日期的一部分,那么它将被添加到文章元字段(’_wp_old_date’)中,用于存储该文章的旧日期。

这个函数最合理的用法是重定向已更改的文章对象,这样那些链接到已更改的文章的对象将被重定向到新的文章。

function wp_check_for_changed_dates( $post_id, $post, $post_before ) {
	$previous_date = gmdate( 'Y-m-d', strtotime( $post_before->post_date ) );
	$new_date      = gmdate( 'Y-m-d', strtotime( $post->post_date ) );

	// Don't bother if it hasn't changed.
	if ( $new_date == $previous_date ) {
		return;
	}

	// We're only concerned with published, non-hierarchical objects.
	if ( ! ( 'publish' === $post->post_status || ( 'attachment' === get_post_type( $post ) && 'inherit' === $post->post_status ) ) || is_post_type_hierarchical( $post->post_type ) ) {
		return;
	}

	$old_dates = (array) get_post_meta( $post_id, '_wp_old_date' );

	// If we haven't added this old date before, add it now.
	if ( ! empty( $previous_date ) && ! in_array( $previous_date, $old_dates, true ) ) {
		add_post_meta( $post_id, '_wp_old_date', $previous_date );
	}

	// If the new slug was used previously, delete it from the list.
	if ( in_array( $new_date, $old_dates, true ) ) {
		delete_post_meta( $post_id, '_wp_old_date', $new_date );
	}
}

常见问题

FAQs
查看更多 >