我如何才能在不丢失旧数据的情况下更新我的后处理?

时间:2021-08-13 作者:saeed

我有一个在同一个meta\\u键中存储新旧meta\\u值的代码,但我不知道它是对还是错(请注意,我希望在同一个meta\\u键中存储数据,而不是单独的meta\\u键):

<?php
global $post;
$get_my_meta = get_post_meta( $post->ID, \'my_meta\', true );
$post_meta_name = get_post_meta($post->ID, \'name-en\',true);
$meta = array(
\'name\'          => $post_meta_name,
\'chap\'          => $season[\'quality_serie\']
);
$updatemeta = array ($get_my_meta, $meta);
if($get_my_meta){ update_post_meta( $post->ID, \'my_meta\', $updatemeta );
} else { add_post_meta( $post->ID, \'my_meta\', $meta, true );
} ?>
当我想获取并显示存储的数据时,它只显示最后的数据,而不是所有数据:

<?php
$first_link = get_post_meta($post->ID,"my_meta", true);
if($first_link){
    ?>
<?php
foreach( $first_link as $season){
?>
<ul>
   <li>
    <?php echo $season[\'chap\'];?>
    <?php echo $season[\'name\'];?>
   </li>
</ul>
<?php }} ?>
任何人都可以修改此代码吗?

1 个回复
SO网友:Buttered_Toast

保存逻辑应该是这样的

<?php
global $post;

$get_my_meta    = get_post_meta($post->ID, \'my_meta\', true);
$post_meta_name = get_post_meta($post->ID, \'name-en\',true);

$meta = [
    \'name\' => $post_meta_name,
    \'chap\' => $season[\'quality_serie\']
];

$updatemeta = [
    $get_my_meta,
    $meta
];

add_post_meta($post->ID, \'my_meta\', $meta, true);
?>
循环逻辑应该是这样的

<?php
$first_link = get_post_meta($post->ID, \'my_meta\');

if ($first_link) : foreach( $first_link as $season) : 
?>
<ul>
   <li>
    <?php echo $season[\'chap\'];?>
    <?php echo $season[\'name\'];?>
   </li>
</ul>
<?php endforeach; endif; ?>
从你的代码来看,我认为这是可行的。如果没有,请添加print_r($first_link) 所以我可以在本地环境中复制它以进行更多测试?