web-dev-qa-db-ja.com

ポストメタキーに複数の値を追加する

複数の投稿メタ値を投稿メタキーに追加することについて質問があります。

これは問題のWordPressのadd_post_meta();関数への link です。

$uniqueパラメータは、私にとってわかりやすくするために少しあいまいです。

キーを一意にしたいかどうか。 trueに設定すると、$ meta_keyをキーにして投稿にカスタムフィールドが添付されていないことを確認します。そのようなフィールドが既に存在する場合、キーは追加されません。

これがtrueに設定されている場合、単一の投稿メタキーに複数の値を追加できますか?

投稿ごとに1つの一意の投稿メタキーを作成しようとしています。このキーは隠しキーとして設定されています。 (アンダースコアを前に付ける - 例:$meta_key = '_task-name';

配列形式で、この単一の一意の投稿メタキーに複数の投稿メタ値を追加することは可能ですか?

get_post_meta($post_id, $meta_key);を使って投稿からこの投稿メタキーを取得すると、1つの投稿に3つか4つのタスク名が割り当てられるかもしれません。

分類法と用語を使用するだけでよいでしょうか。

2
Michael Ecklund

同じ質問をしたかもしれない人のために...

add_post_meta($post_id, $meta_key, $meta_value, $unique);

$uniqueパラメータは、投稿オブジェクトとして投稿オブジェクトに追加しようとしているキー/値に対する既存の投稿メタキーがまだ存在してはならないことを意味します。

ポストメタとして単一の値または配列を格納できます。保存されるデータの種類に制限はありません。

get_post_meta($post_id, $key, $single);

get_post_meta();を使用して投稿オブジェクトから投稿メタを取得するとき、$singleパラメータは1つの結果を文字列として取得するか、その特定の投稿メタキーに格納されているデータの配列全体を取得することを意味します。

私の意見では、1つの投稿オブジェクトに複数のデータを格納する予定の場合は、分類法と用語を使用することをお勧めします。小さい配列だけを保存する場合は、投稿オブジェクトの投稿メタとして配列としてデータを保存するほうが簡単です。

1
Michael Ecklund

連想配列をpost_meta_fieldに挿入できます。

これは、後でデータを取得するための簡単な小さな関数です(テストはしていません)。

function grab_task_name_array($post_id) {
    $new_array = array();
    $array = get_post_meta($post_id,'_task-name'); //do not put true as third parameter (this would return string and not array)
    foreach($array[0] as $key => $value)
     $new_array[$key] = $value;

    return $new_array;
}

多次元配列を格納したい場合は、さらにいくつかのチェックが必要になります。

2
Douglas.Sesar