向现有元键添加新价值

时间:2012-07-19 作者:marctain

我目前正在使用此添加帖子元

    add_post_meta($post_id, \'when\', $date);
自然,每次都会创建一个新的元键/值组合。

我想给键添加另一个值,这样当再次提交日期时,“when”元键中现在有两个日期?

然后我可以查询这些日期吗?或者将它们存储在同一个元密钥中会导致它们以后无法读取?

最终的目标是统计元键中有多少条目,同时仍然能够将日期作为日期处理。

这是可能的还是应该使用新的存储方法?

2 个回复
最合适的回答,由SO网友:Brian Fegter 整理而成

使用以下内容代替add\\u post\\u meta:

update_post_meta($post_id, \'when\' $date);
add_post_meta 就是这样,每次都会添加一个新的元密钥,包括案例中的重复项。

update_post_meta 还包括add_post_meta 如果密钥不存在,但更新现有密钥。

供参考:http://codex.wordpress.org/Function_Reference/update_post_meta

如果要在数组中存储滚动日期,只需在存储之前创建数组,如下所示:

$dates = get_post_meta($post_id, \'when\', true);

if(is_array($dates)) 
    $dates[] = $new_date; //I\'m sure you would do more processing here
else
    $dates = array($new_date);

update_post_meta($post_id, \'when\', $dates);
我建议您为此创建一个自定义接口,而不是使用默认的自定义字段接口,并将自定义字段重命名为“\\u when”,这样它就不会出现在主界面中。因为您正在保存一个数组,所以以原始形式向用户显示它是不实际的。

有关创建元框的更多信息,请查看以下两个参考:

  1. http://codex.wordpress.org/Plugin_API/Action_Reference/save_post
  2. http://codex.wordpress.org/Function_Reference/add_meta_box

SO网友:NJENGAH

我遇到了这个问题,我就是这样解决的:

在我的例子中,我想向现有序列化数据添加一个数组:

enter image description here

我想将使用Ajax发布的新数组数据添加到现有meta_key.

Note : 现有meta\\u密钥为\'accordions\'

function save_new_data(){

  // Step 1: get the data you want to add (can be from an ajax post like my case)

     $posted_data = $_POST;

     //clean it up like remove what you don\'t want like the action from ajax post  

      $new_data  = array_diff_key($posted_data, [\'action\' => "xy", ]); //optional

   //Step 2: get the existing data

      $existing_data = get_post_meta(get_the_ID(), "accordions", true);

   //Step 3: check if its an array, add new data to the existing data then update_post_meta()

    if(is_array($existing_data)) {

         $existing_data[] = $save_data; 

           update_post_meta(get_the_ID(), \'accordions\', $existing_data );
     }

}

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在