本质上,您需要为您的帖子构建一个更新方法。
基本的更新方法需要获取自定义字段的数据,创建一个新数组,然后存储该数据。
if ( get_post_meta( $post_ID, \'updated\', true ) != 1 ) :
$old_data = get_post_custom( $post_ID );
$new_data = array(
\'name\' => $old_data[ \'name\' ],
\'url\' => $old_data[ \'url\' ]
);
然后,将该数据存储在post meta中—它将被序列化。
update_post_meta( \'custom_data\', serialize( $new_data ) );
然后,删除旧字段并设置标志以显示您已更新:
delete_post_meta( $post_ID, \'name\' );
delete_post_meta( $post_ID, \'url\' );
update_post_meta( $post_ID, \'updated\', 1 );
endif;
至于将其与链接到的插件集成。。。你还需要做更多的事情来完成这项工作。我把它作为一个项目留给你。
更新:拆分现有字符串根据您的注释,现有数据不存储在单独的自定义字段中,而是存储在单个自定义字段中,如name, url $ name, url $ name, url
. 您可以将该字符串拆分为几个数组,并对其进行迭代以创建新数据。
$oldData = "name1, url1 $ name2, url2 $ name3, url3";
$newData = array();
$dataArrays = explode( " $ ", $oldData );
// $dataArrays = ["name1, url1", "name2, url2", "name3, url3"];
foreach( $dataArrays as $dataArray ) {
$separated = explode( ", ", $dataArray );
// $separated = ["name1", "url1"];
array_push( $newData, array(
\'name\' => $separated[0],
\'url\' => $separated[1]
) );
}
/* $newData = array(
array(
\'name\' => \'name1\',
\'url\' => \'url1\'
),
array(
\'name\' => \'name2\',
\'url\' => \'url2\'
),
array(
\'name\' => \'name3\',
\'url\' => \'url3\'
)
);
*/