疯狂问题-更新帖子ID

时间:2017-08-31 作者:Patrik CK

我知道这有点奇怪,但有没有一个功能可以在用户更新帖子时自动更新/修改post\\u id?我知道有自动更新发布日期的功能,但ID是如此的唯一,有可能吗?

谢谢

1 个回复
SO网友:Jeremy Muckel

首先,我不知道你为什么要这样做。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\'

这将更改查询以首先显示最近修改的帖子。

结束

相关推荐

Ignore latest two posts

我试图从一个页面中排除最近的两篇博客文章。我知道这是可能的offset 然而,这样做会导致一个bug,其中一些博客帖子会在第二页上重复,因此并不理想。目前,我正在使用post id手动执行此操作,如下所示:$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : \'1\'; $args = array( \'posts_per_page\' => 5, \'post__not