public function get_boxes() {
		if ( empty( $this->boxes ) && $this->load_boxes === false ) {
			if ( ! method_exists( $this, 'register' ) ) {
				return [];
			}

			$this->load_boxes = true;

			$this->call_parent_register();
			$this->register();
		}

		// Merge boxes, e.g a parent box with a child box.
		$this->boxes = $this->merge_boxes( $this->boxes );

		/**
		 * Modify boxes array.
		 *
		 * @param array  $boxes
		 * @param string $id
		 */
		$this->boxes = apply_filters( 'papi/get_boxes', $this->boxes, $this->get_id() );
		$this->boxes = is_array( $this->boxes ) ? $this->boxes : [];

		// Go through all boxes and only add boxes
		// that is a array and remove boxes that isn't
		// a instance of core box class.
		foreach ( $this->boxes as $index => $box ) {
			if ( is_array( $box ) ) {
				if ( is_string( $index ) ) {
					$box['title'] = $index;
				}

				$this->box( $box );

				unset( $this->boxes[$index] );
				continue;
			}

			// Remove boxes that isn't a instanceof core box class.
			if ( $box instanceof Papi_Core_Box === false ) {
				unset( $this->boxes[$index] );
				continue;
			}

			// Remove box if site id isn't zero and isn't the current blog id.
			if ( $box->site_id !== 0 && $box->site_id !== get_current_blog_id() ) {
				unset( $this->boxes[$index] );
				continue;
			}
		}

		return papi_sort_order( array_reverse( $this->boxes ) );
	}