反序列化自定义字段并在 Wordpress 数据库中另存为多行
Unserialize Custom Field & Save as Multiple Rows in Wordpress Database
我在 wordpress 数据库的 post_meta table 中有一个自定义字段。它被称为'combined'。如果键有多个值,我想根据键分隔值并将它们保存为多行。
我的meta_key:
我运行我的代码后的结果:
我想要的:
我的代码:
add_action( 'init', function() {
if ( 'migrate' !== filter_input( INPUT_GET, 'action' ) ) {
return;
}
$query = new WP_Query( [
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'any',
] );
if ( ! $query->have_posts() ) {
return;
}
while ( $query->have_posts() ) {
$query->the_post();
$data = get_post_meta( get_the_ID(), 'combined', true );
foreach($data as $singleData => $value ){
update_post_meta( get_the_ID(), $singleData, $value );
}
}
} );
我找到了获取数据库中所需值的方法。用代码更改上面代码中的循环部分就可以了。
$data = get_post_meta( get_the_ID(), 'combined', true );
foreach($data as $singleData => $value ){
$thisArray = $data[$singleData];
foreach ($thisArray as $key2 => $value){
add_post_meta( get_the_ID(), $singleData, $thisArray[$key2], $unique = false);
}
}
我在 wordpress 数据库的 post_meta table 中有一个自定义字段。它被称为'combined'。如果键有多个值,我想根据键分隔值并将它们保存为多行。
我的meta_key:
我运行我的代码后的结果:
我想要的:
我的代码:
add_action( 'init', function() {
if ( 'migrate' !== filter_input( INPUT_GET, 'action' ) ) {
return;
}
$query = new WP_Query( [
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'any',
] );
if ( ! $query->have_posts() ) {
return;
}
while ( $query->have_posts() ) {
$query->the_post();
$data = get_post_meta( get_the_ID(), 'combined', true );
foreach($data as $singleData => $value ){
update_post_meta( get_the_ID(), $singleData, $value );
}
}
} );
我找到了获取数据库中所需值的方法。用代码更改上面代码中的循环部分就可以了。
$data = get_post_meta( get_the_ID(), 'combined', true );
foreach($data as $singleData => $value ){
$thisArray = $data[$singleData];
foreach ($thisArray as $key2 => $value){
add_post_meta( get_the_ID(), $singleData, $thisArray[$key2], $unique = false);
}
}