From 2a92baf7c03672d9cb6850821a3bcd2bcb25da9e Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 16 Oct 2016 11:05:08 +0100 Subject: [PATCH] remove subkeys if the user didnt ask for them specifically --- src/Models/Post.php | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/Models/Post.php b/src/Models/Post.php index 6a84bc0..755aa78 100644 --- a/src/Models/Post.php +++ b/src/Models/Post.php @@ -94,27 +94,35 @@ class Post extends Model $meta = $this->getMeta($key); - foreach ($meta as $key => $value) - { - if (is_serialized($value)) { - $value = @unserialize($value); - } + if (!is_array($meta)) { + $meta = [$key => $meta]; + $wantsArray = false; + } else { + $wantsArray = true; + } - $field = $this->getMeta('_' . $key); + foreach ($meta as $k => $value) + { + $field = $this->getMeta('_' . $k); if (!acf_is_field_key($field)) { - unset($meta[$key]); + unset($meta[$k]); continue; } - $field = get_field_object($field, $key, false, false); + if (is_serialized($value)) { + $value = @unserialize($value); + } + + $field = get_field_object($field, $k, false, false); - if (acf_is_sub_field($field)) { - unset($meta[$key]); + // unset subfields if the user didn't ask for it specifically + if (((is_array($key) && !in_array($k, $key)) && $k !== $key || $key === null) && acf_is_sub_field($field)) { + unset($meta[$k]); continue; } - $value = Action::filter('acf/load_value', $value, $key, $field); + $value = Action::filter('acf/load_value', $value, $k, $field); $value = Action::filter('acf/load_value/type=' . $field['type'], $value, $this->ID, $field); $value = Action::filter('acf/load_value/name=' . $field['_name'], $value, $this->ID, $field); $value = Action::filter('acf/load_value/key=' . $field['key'], $value, $this->ID, $field); @@ -123,10 +131,10 @@ class Post extends Model $value = acf_format_value($value, $this->ID, $field); } - $meta[$key] = $value; + $meta[$k] = $value; } - return $meta; + return $wantsArray ? $meta : collect($meta)->first(); } /** -- libgit2 1.7.2