WordPressのDBに登録されているシリアライズデータの使い方

WordPressのDBに登録されているシリアライズデータの使い方です。

アイキャッチ画像の保存とかに使われる、こんな感じのやつですね。

a:5:{s:5:"width";i:7360;s:6:"height";i:4912;s:4:"file";s:31:"2017/08/sticker-mule-189122.jpg";s:5:"sizes";a:6:{s:9:"thumbnail";a:4:{s:4:"file";s:31:"sticker-mule-189122-150x150.jpg";s:5:"width";i:150;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:31:"sticker-mule-189122-300x200.jpg";s:5:"width";i:300;s:6:"height";i:200;s:9:"mime-type";s:10:"image/jpeg";}s:12:"medium_large";a:4:{s:4:"file";s:31:"sticker-mule-189122-768x513.jpg";s:5:"width";i:768;s:6:"height";i:513;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:32:"sticker-mule-189122-1024x683.jpg";s:5:"width";i:1024;s:6:"height";i:683;s:9:"mime-type";s:10:"image/jpeg";}s:30:"twentyseventeen-featured-image";a:4:{s:4:"file";s:33:"sticker-mule-189122-2000x1200.jpg";s:5:"width";i:2000;s:6:"height";i:1200;s:9:"mime-type";s:10:"image/jpeg";}s:32:"twentyseventeen-thumbnail-avatar";a:4:{s:4:"file";s:31:"sticker-mule-189122-100x100.jpg";s:5:"width";i:100;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:12:{s:8:"aperture";s:1:"0";s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";s:1:"0";s:9:"copyright";s:0:"";s:12:"focal_length";s:1:"0";s:3:"iso";s:1:"0";s:13:"shutter_speed";s:1:"0";s:5:"title";s:0:"";s:11:"orientation";s:1:"0";s:8:"keywords";a:0:{}}}

シリアライズデータを使うための関数

maybe_unserialize( $original )を使います。

参考:https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/maybe_unserialize

冒頭で書いたシリアライズデータを引数に入れてみる。
こんな感じの配列で返ってきます。

array (size=5)
  'width' => int 7360
  'height' => int 4912
  'file' => string '2017/08/sticker-mule-189122.jpg' (length=31)
  'sizes' => 
    array (size=6)
      'thumbnail' => 
        array (size=4)
          'file' => string 'sticker-mule-189122-150x150.jpg' (length=31)
          'width' => int 150
          'height' => int 150
          'mime-type' => string 'image/jpeg' (length=10)
      'medium' => 
        array (size=4)
          'file' => string 'sticker-mule-189122-300x200.jpg' (length=31)
          'width' => int 300
          'height' => int 200
          'mime-type' => string 'image/jpeg' (length=10)
      'medium_large' => 
        array (size=4)
          'file' => string 'sticker-mule-189122-768x513.jpg' (length=31)
          'width' => int 768
          'height' => int 513
          'mime-type' => string 'image/jpeg' (length=10)
      'large' => 
        array (size=4)
          'file' => string 'sticker-mule-189122-1024x683.jpg' (length=32)
          'width' => int 1024
          'height' => int 683
          'mime-type' => string 'image/jpeg' (length=10)
      'twentyseventeen-featured-image' => 
        array (size=4)
          'file' => string 'sticker-mule-189122-2000x1200.jpg' (length=33)
          'width' => int 2000
          'height' => int 1200
          'mime-type' => string 'image/jpeg' (length=10)
      'twentyseventeen-thumbnail-avatar' => 
        array (size=4)
          'file' => string 'sticker-mule-189122-100x100.jpg' (length=31)
          'width' => int 100
          'height' => int 100
          'mime-type' => string 'image/jpeg' (length=10)
  'image_meta' => 
    array (size=12)
      'aperture' => string '0' (length=1)
      'credit' => string '' (length=0)
      'camera' => string '' (length=0)
      'caption' => string '' (length=0)
      'created_timestamp' => string '0' (length=1)
      'copyright' => string '' (length=0)
      'focal_length' => string '0' (length=1)
      'iso' => string '0' (length=1)
      'shutter_speed' => string '0' (length=1)
      'title' => string '' (length=0)
      'orientation' => string '0' (length=1)
      'keywords' => 
        array (size=0)
          empty

簡単ですね。

シリアル化する場合

逆にシリアル化シたい時は、maybe_serialize( $data )を使います。

参考:https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/maybe_serialize

配列なんかを引数に入れてやると、冒頭のような長ったらしい文字列に変わります。