wp_postmeta
테이블에 저장하기 전에 연관 배열의 각 구성원에 대해 암호화 함수를 실행해야합니다. 내 양식 동적 추가/행을 삭제할 수 있습니다. 나는 이것을 array_walk()
을 사용하여 작동 시키려고 노력했다.add_post_meta() 함수를 사용하여 연관 배열을 저장할 수 없습니다.
이 양식을 구성하는 방법입니다 :
<input type="text" id="z_my_data[][username]" name="z_my_data[0][username]">
<input type="text" id="z_my_data[][password]" name="z_my_data[0][password]">
이는 'save_post` 액션을 실행한다 :
// Save encrypted data to post meta
if (isset($_POST['z_my_data'])) {
// Get posted form variables
$my_data = $_POST['z_my_data'];
// Encrypt each member of each row
for ($i = 0; $i < count($my_data); $i++) {
$cryptKey = $this->cryptKey;
array_walk($my_data[strval($i)], create_function('&$val', 'global $cryptKey; $val = Crypto::encrypt($val, $cryptKey);'));
}
if (! add_post_meta($post_id, '_my_data', $my_data, true)) {
update_post_meta($post_id, '_my_data', $my_data);
}
} else {
delete_post_meta($post_id, '_my_data');
}
나는 데이터가 암호화되고 있음을 볼 수 있습니다.
Array
(
[0] => Array
(
[username] => ®ØåÛâÏ0…"ë°?mˤÙ
[password] => xSFç„L¶·3z˜'J0ÖRÅÎj
)
)
그러나 포스트 메타 키가 생성되지 않고 오류가 생성됩니다 다음은 for
루프 후 print_r($my_data)
입니다. 메타 키가 포스트 메타 테이블에 존재하지 않지만 add_post_meta()
이 false를 반환하고 키/값이 절대로 추가되지 않습니다.
내가 뭘 잘못하고 있는지 누가 알 수 있습니까?
어떻게 말할지는 모르겠지만 [0]은 인덱스 키가 아닌 명명 된 키라고 생각합니다. 나는 하나 이상의 요소를 생성하고 [0] 요소를 삭제할 수 있고 나머지 하나의 요소는 여전히 print_r
을 사용하여 [1]을 보여줄 수 있기 때문에 그렇게 말합니다. 당신의 if (! add_post_meta($post_id, '_my_data', $my_data, true)) {
당신이 add_post_meta()
기능을 사용하고 마지막 인수가 true
로 설정에서
'(만약! add_post_meta ....','else' 조건을 넣고 뭔가 처리합니다. –
@JeremyHarris'add_post_meta'는 이미 존재하면 false를 반환합니다. 추가가 성공하면 true를 반환합니다. 당신의 요점을 놓치고 있습니까? – rwkiii
'게시물 메타 키가 생성되지 않고 오류가 생성되지 않습니다. '.... 그래서'if' 문은 false를 반환합니다. 'unique' 인자가 true (마지막 인자)로 설정되어 있으므로, 아마도 중복 값을 가지고있을 것입니다. 어떻게 처리할까요? 'else' 조건을 추가하고 처리하십시오 :-) –