我有一个发布到野外的主题,但没有适当地为帖子类型加前缀。是的,我知道,这很遗憾,我很后悔:(
因此,我目前正在使用acme
作为帖子类型名称,但我想将其更改为prefix_acme
.
我正在寻找最合适的函数/钩子来重命名帖子类型,而不会丢失任何数据,这样用户就不会有什么不同。
数据库值是否可以在wp_posts -> post_type
只是在主题更新期间更改?
如果是这样的话,那么对于wp_postmeta -> meta_key
而不会失去meta_value
?
我有一个发布到野外的主题,但没有适当地为帖子类型加前缀。是的,我知道,这很遗憾,我很后悔:(
因此,我目前正在使用acme
作为帖子类型名称,但我想将其更改为prefix_acme
.
我正在寻找最合适的函数/钩子来重命名帖子类型,而不会丢失任何数据,这样用户就不会有什么不同。
数据库值是否可以在wp_posts -> post_type
只是在主题更新期间更改?
如果是这样的话,那么对于wp_postmeta -> meta_key
而不会失去meta_value
?
这不是完整的答案,但我认为如果您能够制作模板,它将对您有很大帮助-您将能够做到这一点:
在theme init(安装时)中,make函数将进行db查询,以查找具有您的post\\u类型的所有post,并将post\\u类型重命名为您的新值。(我认为这非常简单,只需一个查询即可完成)。
然后确保您的新主题支持新的post\\u类型(只需更改post\\u类型名称)-就是这样!客户端不会丢失任何东西,您会在几秒钟内修复它:)
也许这个查询可以做到:(未测试)
function fixme($oldname, $new_typename){
global $wpdb;
$wpdb->query( $wpdb->prepare( "UPDATE ".$wpdb->posts." SET post_type = %s WHERE post_type = %s", $new_typename, $oldname ) );
}
您可以在此函数中使用:$wpdb->prefix
如果需要获取前缀。或者您可以使用add_action( \'after_setup_theme\', \'your_function_name\' );
因此,在安装主题后,它将调用您定义的函数,但您必须将其更改为不使用参数来设置新的post\\u类型,而是手动写入它们(分配给$oldname,$new\\u typename值)
是的,您也可以对元键执行相同的操作(如果它们没有被清理,如果它们被清理了,那么您将比在常规情况下更需要php)。。您可以对查询执行任何操作,因为它们直接指向数据库。
我正在尝试为我开发的站点创建自定义搜索页面,但我缺少创建自定义sql查询所需的信息。你们知道有什么有用的资源吗?