id = isset( $data['id'] ) ? $data['id'] : 0; $this->title = isset( $data['title'] ) ? (string) $data['title'] : ''; $this->url = isset( $data['url'] ) ? (string) $data['url'] : ''; $this->excerpt = isset( $data['excerpt'] ) ? (string) $data['excerpt'] : ''; $this->image_id = isset( $data['image_id'] ) ? (int) $data['image_id'] : 0; $this->image_url = isset( $data['image_url'] ) ? (string) $data['image_url'] : ''; $this->image_alt = isset( $data['image_alt'] ) ? (string) $data['image_alt'] : ''; $this->timestamp = isset( $data['timestamp'] ) ? (int) $data['timestamp'] : 0; $this->author = isset( $data['author'] ) ? (string) $data['author'] : ''; $this->terms = isset( $data['terms'] ) && is_array( $data['terms'] ) ? array_values( $data['terms'] ) : array(); $this->badge = isset( $data['badge'] ) && is_array( $data['badge'] ) ? $data['badge'] : null; } /** * Rebuilds an item from cached data. * * @param array $data Data from to_array(). * @return Item */ public static function from_array( array $data ) { return new self( $data ); } /** * Serializable representation. * * @return array */ public function to_array() { return get_object_vars( $this ); } /** * Whether the item has any image. * * @return bool */ public function has_image() { return $this->image_id > 0 || '' !== $this->image_url; } /** * Term shown as the card badge. * * @return array|null */ public function primary_term() { return $this->badge; } }