UPDATE_POST_META添加到数组中,而不是替换值

时间:2019-06-03 作者:Benedict Harris

update_post_meta() 不断向数组中添加,而不是替换值。有什么建议吗?

以前我用过add_post_meta() 这是偶然的,也许它以某种方式将场标记为一个数组?

更新,那么如何将元字段设置为非数组?

代码:

$lowjobtrig = 1;    
foreach ( $values as $value ) :


    //====================myedit==================

    if ($key == \'public_paywall\') {
        if ($value == \'paywall\') {
            add_post_meta($postId, $key, $value, /*unique=*/ false);
        } elseif ($value == \'public\'{
            add_post_meta($postId, $key, $value, /*unique=*/ false);                        
        } 

    } elseif ($key == \'pay_offer\') {
        if ($value == \'pay\') {
            add_post_meta($postId, $key, $value, false);
        } elseif ($value == \'no pay\') {
            add_post_meta($postId, $key, $value, false);    
        } else {
        }

    } elseif ($key == \'low_jobs\' AND $value == \'under 100\'){
        $lowjobtrig = 1;
        update_post_meta($postId, $key, \'under 100\');   

    } elseif ($key == \'low_jobs\' AND $value != \'under 100\' AND $lowjobtrig == 0){
        add_post_meta($postId, $key, \'OVER 100\', true); 
        $lowjobtrig = 1;             
    }

    else {
        FeedWordPress::diagnostic(\'syndicated_posts:meta_data\', ">>>>>>>>>>ELSE Adding post meta-datum to post [$postId]: [$key] = ".MyPHP::val($value, /*no newlines=*/ true));                            
        add_post_meta($postId, $key, $value, /*unique=*/ false);

    }

1 个回复
SO网友:nmr

根据您共享的代码,负责复制自定义字段的low_jobs 可以是下面的行FeedWordPress::diagnostic().

如果钥匙low_jobs 在循环中遇到,并且:

  • $value == \'under 100\' 然后将更新字段$value != \'under 100\' AND $lowjobtrig == 0 那么如果元low_jobs 不存在,它将被创建,but $lowjobtrig is always 1low_jobs will be created, even if it already exists low_jobs 值不同于under 100 此行

    add_post_meta($postId, $key, \'OVER 100\', true); 
    
    将不会执行。相反,将执行以下代码:

    FeedWordPress::diagnostic( ... );
    add_post_meta($postId, $key, $value, /*unique=*/ false);  // <---
    

相关推荐

删除副本-ARRAY_UNIQUE()

我试图制作一个简单的名字列表,链接到个人资料信息。列表中的一些人有多个地址,因此会多次出现在列表中(因为他们的地址会出现在个人资料页面上)。我想删除重复的名称。我尝试使用array\\u unique(),但似乎没有任何效果,重复项仍然显示出来。也许我用的地方不对?我会很感激你的帮助。注意:使用ACF Pro,因此使用了“the\\u field()”和“get\\u field()”。这是我当前的代码:<?php while ( have_posts() ) : the_post(); ?>