2014-04-02 3 views
0

WordPress update_post_meta 관련 문제.WordPress update_post_meta가 이상한 결과를 반환합니다.

저는 _gravity_form_data를 업데이트해야하는 기능이 있습니다. 작동하지만 추가 이유로 일부 데이터가 추가됩니다. 여기

기능입니다 :

function wpufe_gravity_custom_video($post_id) { 
    if (isset($_POST['custom_video'])) { 

     $custom_video = 'a:13:{s:2:"id";s:1:"2";s:13:"display_title";b:0;s:19:"display_description";b:0;s:25:"disable_woocommerce_price";s:2:"no";s:12:"price_before";s:0:"";s:11:"price_after";s:0:"";s:20:"disable_calculations";s:3:"yes";s:22:"disable_label_subtotal";s:2:"no";s:21:"disable_label_options";s:2:"no";s:19:"disable_label_total";s:2:"no";s:14:"label_subtotal";s:8:"Subtotal";s:13:"label_options";s:7:"Options";s:11:"label_total";s:5:"Total";}'; 

     update_post_meta($post_id, '_gravity_form_data', $custom_video); 
    } 
} 
add_action('wpuf_add_post_after_insert', 'wpufe_gravity_custom_video'); 
add_action('wpuf_edit_post_after_update', 'wpufe_gravity_custom_video'); 
이 콘텐츠가 _gravity_form_data 제작되어야한다

: 그것은 _gravity_form_data 필드를 업데이트 할 때 그러나

a:13:{s:2:"id";s:1:"2";s:13:"display_title";b:0;s:19:"display_description";b:0;s:25:"disable_woocommerce_price";s:2:"no";s:12:"price_before";s:0:"";s:11:"price_after";s:0:"";s:20:"disable_calculations";s:3:"yes";s:22:"disable_label_subtotal";s:2:"no";s:21:"disable_label_options";s:2:"no";s:19:"disable_label_total";s:2:"no";s:14:"label_subtotal";s:8:"Subtotal";s:13:"label_options";s:7:"Options";s:11:"label_total";s:5:"Total";} 

을, 출력은 다음과 같습니다

여기에 기능입니다
s:429:"a:13:{s:2:"id";s:1:"2";s:13:"display_title";b:0;s:19:"display_description";b:0;s:25:"disable_woocommerce_price";s:2:"no";s:12:"price_before";s:0:"";s:11:"price_after";s:0:"";s:20:"disable_calculations";s:3:"yes";s:22:"disable_label_subtotal";s:2:"no";s:21:"disable_label_options";s:2:"no";s:19:"disable_label_total";s:2:"no";s:14:"label_subtotal";s:8:"Subtotal";s:13:"label_options";s:7:"Options";s:11:"label_total";s:5:"Total";}"; 

왜 추가 : s : 429 : "처음과 그 다음에"; 결국? 가장 중요한 것은 어떻게 수정해야합니까? :)

고마워요.


UPDATE : 데이터를 직렬화 제안, 그래서 내가 그랬어 :

function wpufe_gravity_custom_video($post_id) { 
    if (isset($_POST['custom_video'])) { 
     $gubcustom_video = array('id' => 2, 'display_title' => '', 'display_description' => '', 'disable_woocommerce_price' => 'no', 'price_before' => '', 'price_after' => '', 'disable_calculations' => 'yes', 'disable_label_subtotal' => 'no', 'disable_label_option' => 'no', 'disable_label_total' => 'no', 'label_subtotal' => 'Subtotal', 'label_options' => 'Options', 'label_total' => 'Total'); 
     $gubvideodata = serialize($gubcustom_video); 
     update_post_meta($post_id, '_gravity_form_data', $gubvideodata); 
    } 
} 
add_action('wpuf_add_post_after_insert', 'wpufe_gravity_custom_video'); 
add_action('wpuf_edit_post_after_update', 'wpufe_gravity_custom_video'); 

을 ... 그리고 여전히 잘못된 데이터가 MySQL의에 게시 얻을.

삽입 할 문자열을 삽입하는 방법이 있습니까? 그게 내가하고 싶은 모든 것, 그 텍스트로 데이터베이스를 업데이트하는 것입니다.

필자는 phpMySql에서 쉽게이 작업을 수행 할 수 있으며 텍스트를 복사하여 붙여 넣기 만하면 챔피언처럼 작동합니다. 그것이 내가 바라는 해결책이다. 다시 한 번 감사드립니다!

답변

0

문제가 해결되었습니다. WP User Frontend Pro는 고유 한 "1"값으로 메타 키를 설정하여 직렬화 된 문자열을 다시 직렬화했습니다. WPUF 메타 키를 제거하고 필드를 떠나면 문제가 해결됩니다.

0

그것은 수동으로 삽입하려고하는 직렬화 배열처럼 보이지만 당신은 예를 들어, serialize 기능을 사용하여 직렬화하여 삽입해야합니다

add_action('save_post', 'save_meta_data'); 

function save_meta_data($post_id) 
{ 
    $custom_video = array('id' => 2, 'display_title' => ''); 
    $data = serialize($custom_video); 
    update_post_meta($post_id, '_gravity_form_data', $data); 
} 
: 다음 훅을 사용해보십시오 또한

$custom_video = array('id' => 2, 'display_title' => ''); 
$data = serialize($custom_video); 
update_post_meta($post_id, '_gravity_form_data', $data); 

+0

약간의 수정으로 내 질문을 업데이트했습니다. –

+0

업데이트 된 답변을 확인하십시오. –

+0

도움을 주셔서 감사합니다. 원시 데이터를 직렬화하는 것보다는 그냥 입력하는 방법을 찾고 있습니다. myPhpAdmin을 통해 붙여 넣을 수 있지만 자동화 된 솔루션이 필요합니다. ;-) 왜 난 그냥 일반 텍스트로 삽입하지 못할 수 있습니까? 감사! –

관련 문제