Como obter atualização_post_meta saída para include o comprimento da corda

Estou usando o plugin WP All Import para importar um tipo de publicação especial. O plugin inclui um gancho de ação pmxi_gallery_image que é executado após a importação que salva as imagens de anexos na galeria de postagens.

Eu incluí esta ação em uma function no meu arquivo function.php no meu tema filho:

//After WP All Import runs this will place the attached photos in the gallery images field by post id add_action('pmxi_gallery_image', 'update_images_meta', 10, 3); function update_images_meta( $pid, $attid, $image_filepath ) { // Get all the image attachments for the post $param = array( 'post_parent' => $pid, 'post_type' => 'attachment', 'post_mime_type' => 'image' ); $attachments = get_children( $param ); // Initialize the array $atts = array(); // Fill the array with attachment ID's foreach($attachments as $attachment) { $atts[] = $attachment->ID; } // Disable this hook which was overwrinting our changes // remove_action( 'save_post', 'flexible_save_details', 10 ); // Update the post's meta field with the attachment arrays update_post_meta( $pid, 'images', $atts ); } 

Isso exibe uma matriz de ID da publicação da imagem:

 a:4:{i:0;i:38985;i:1;i:38986;i:2;i:38987;i:3;i:38983;} 

Eu preciso include um comprimento de string antes do ID, com os ids encapsulados entre aspas, então a saída parece assim para a galeria que o tema usa:

 a:4:{i:0;s:4:"7613";i:1;s:4:"7615";i:2;s:4:"7616";i:3;s:4:"7618";} 

Solutions Collecting From Web of "Como obter atualização_post_meta saída para include o comprimento da corda"

Seus dados estão sendo serializados corretamente. Seu código economiza uma série de números inteiros. Inteiros não são strings e, portanto, um comprimento de seqüência de caracteres não é salvo. Execute o seguinte código e deve ilustrar o ponto:

 $str = 'a:4:{i:0;s:4:"7613";i:1;s:4:"7615";i:2;s:4:"7616";i:3;s:4:"7618";}'; $str = maybe_unserialize($str); var_dump($str); echo '
'; var_dump(maybe_serialize($str)); echo '
'; $str = array( 1234,4567,8910,1112 ); var_dump(maybe_serialize($str)); echo '
'; $str = array( '1234','4567','8910','1112' ); var_dump(maybe_serialize($str));

Para obter os resultados desejados, guarde strings e não inteiros:

 // Fill the array with attachment ID's foreach($attachments as $attachment) { $atts[] = "$attachment->ID"; }