2 votes

Enregistrement des données des champs personnalisés au format tableau sérialisé droit dans wp_postmeta

Je travaille sur wordpress avec woocommerce et j'utilise Plugin WCK pour les champs personnalisés. Je crée des produits par programme.

J'ai besoin de sauvegarder les données des champs personnalisés sous forme de tableau dans la base de données de façon progressive. Mais il n'enregistre pas correctement et n'affiche pas les valeurs des champs personnalisés dans le backend pour les produits. J'utilise ce code.

 $data= array(
    'alternative-product-names' => $alternative_pname,
    'manufacturers-part-number' => $manufature_park_number,
    'currently-packaged'=> $currently_packaged,
    'other-package-options' => $other_pkg_opt,
    'inner-pack-qty' => $inner_pack_qty,
    'inner-pack-dimensions' => $inner_pck_dimension,
    'packaging-picture'=>''
    );

update_post_meta( $post_id, 'productextrainfo1234', $data );

J'ai besoin de sauvegarder les données dans ce format :

a:1:{i:0;a:15:{s:25 : "alternative-product-names";s:4 : "fgfg";s:25 : "manufacturers-part-number";s:4 : "gffg";s:18 : "currently-packaged";s:4 : "fgfg";s : 21 : "other-package-options";s:4 : "fgfg";s:14 : "inner-pack-qty";s:4 : "fggf";s:21 : "inner-pack-dimensions";s:17 : "packaging-picture";s:3 : "561";}}

3voto

LoicTheAztec Points 72349

Après avoir testé votre code :

D'abord, comme vous l'avez 7 lignes de clés/valeurs dans votre tableau, de sorte que votre chaîne sérialisée ne peut pas commencer par a:1:{i:0;a:15:{ … mais plutôt avec a:1:{i:0;a:7:{ … .

Deuxièmement, vous devez intégrer votre tableau dans un tableau vide pour obtenir le format correct que vous souhaitez :
a:1:{i:0;a:7:{ … }}; .

Votre code devra donc être comme ceci :

$data= array( 
    array(
        'alternative-product-names' => $alternative_pname,
        'manufacturers-part-number' => $manufature_park_number,
        'currently-packaged'        => $currently_packaged,
        'other-package-options'     => $other_pkg_opt,
        'inner-pack-qty'            => $inner_pack_qty,
        'inner-pack-dimensions'     => $inner_pck_dimension,
        'packaging-picture'         => ''
    )
);

update_post_meta( $product_id, 'productextrainfo1234', $data );

De cette façon, vous obtiendrez cette valeur de données sérialisées dans votre base de données :

a:1:{i:0;a:7:{s:25 : "alternative-product-names";N;s:25 : "manufacturers-part-number";N;s:18 : "currently-packaged";N;s:21 : "other-package-options";N;s:14 : "inner-pack-qty";N;s:21 : "inner-pack-dimensions";N;s:17 : "packaging-picture";s:0 :";}}

Au lieu de :

a:7:{s:25 : "alternative-product-names";N;s:25 : "manufacturers-part-number";N;s:18 : "currently-packaged";N;s:21 : "other-package-options";N;s:14 : "inner-pack-qty";N;s:21 : "inner-pack-dimensions";N;s:17 : "packaging-picture";s:0 :";}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X