首先,我不知道你为什么要这样做。IDs are unique for a reason. If you change the ID, I can only see it creating more problems than it solves. 你能解释一下你为什么要这样做吗?我相信社区会给你一个替代的解决方案。但要回答这个问题,下面是:
不,没有这样的函数。当用户保存或更新帖子时,您需要运行一些代码。但这应该是可能的。您可以在主题函数中使用此动作挂钩。php文件:
add_action( \'post_updated\', \'my_function_name_here\', 10, 3 );
function my_function_name_here($post_ID, $post_after, $post_before) {
global $wpdb;
// this is the custom query
$wpdb->query($wpdb->prepare("UPDATE wp_posts SET ID=[your new ID] WHERE ID = $post_ID"));
}
然后在该函数中,您可以创建一个自定义数据库查询来更改ID。
Note: This will fail if the new ID is already in the table, so you may want to check for the new ID\'s existence first. Or solve the problem in a way that does not attempt to change IDs
我必须强调,这并不是实现你想要实现的目标的好方法。希望我能帮忙。
Update: OP将此作为实际问题发布:“我遇到的问题是,物业管理主题的开发人员决定按ID(比如发布日期)订购物业。我的一个客户拥有定期处于活动和非活动状态的租赁物业。当我们重新激活一个物业时,我们希望它是第一批房源,但因为它是按ID订购的,所以除非我们重新进入该物业,否则这无法发生。现在我们只是克隆e属性并删除原始属性,因为这会为克隆的属性提供一个新ID。“
在本例中,查找用于获取所有帖子的查询。使用以下参数,而不是将ID用作order\\u by:\'post_status\' => \'publish\', \'orderby\' => \'modified\', \'order\' => \'DESC\'
这将更改查询以首先显示最近修改的帖子。