alleyinteractive/expiring-posts

自动过期帖子

v0.2.0 2023-10-28 02:21 UTC

README

在一定时间后自动过期帖子。检查帖子的发布和修改日期以确定帖子是否过期,并将对帖子执行操作(草稿/回收站/删除)。

用法

注册帖子类型

过期的帖子可以被设置为草稿或回收站帖子,或者直接删除。

注册帖子类型,一个月后变成草稿

expiring_posts_add_post_type(
	$post_type,
	[
		'action'       => 'draft',
		'expire_after' => MONTH_IN_SECONDS,
	],
);

注册帖子类型,一周后放入回收站

expiring_posts_add_post_type(
	$post_type,
	[
		'action'       => 'trash',
		'expire_after' => WEEK_IN_SECONDS,
	],
);

注册帖子类型,一周后删除

expiring_posts_add_post_type(
	$post_type,
	[
		'action'       => 'delete',
		'expire_after' => WEEK_IN_SECONDS,
	],
);

注册帖子类型,一周后更新

expiring_posts_add_post_type(
	$post_type,
	[
		'action'       => 'update',
		'expire_after' => WEEK_IN_SECONDS,
		'update_args'  => [
			'meta_input' => [
				'key' => 'value',
			],
		],
	],
);

// Or use a callback to define the arguments. The callback
// is passed an instance of WP_Post.
expiring_posts_add_post_type(
	$post_type,
	[
		'action'       => 'update',
		'expire_after' => WEEK_IN_SECONDS,
		'update_args'  => fn ( WP_Post $post ) => [
			'post_title' => 'Expired: ' . $post->post_title,
		],
	],
);

默认情况下,帖子类型将在一年后设置为草稿。

钩子

expiring_posts_is_post_expired

应用于检查帖子是否过期的过滤器。

属性

  • $is_expired: bool 帖子是否过期。
  • $post: WP_Post 要检查的帖子。
  • $threshold: int 检查阈值(Unix时间戳)。
  • $now: int 当前时间戳。

expiring_posts_cron_interval

执行过期检查的间隔。默认为每小时。

expiring_posts_expired

当帖子过期时触发的动作。

属性

  • $post_id: int 帖子ID
  • $post: WP_Post 帖子对象。

expiring_posts_query_args

应用于查找过期帖子的查询参数的过滤器。

属性

  • $args: array 查询参数。
  • $now: int 当前时间戳。

注销帖子类型

expiring_posts_remove_post_type( $post_type );

测试

composer test

许可

GPL v2许可下发布。