diff --git a/core/modules/path/path.module b/core/modules/path/path.module
index 24309b7..e433f4d 100644
--- a/core/modules/path/path.module
+++ b/core/modules/path/path.module
@@ -7,9 +7,9 @@
 
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
-use Drupal\Core\Field\FieldDefinition;
 use Drupal\Core\Field\BaseFieldDefinition;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 
 /**
@@ -89,3 +89,47 @@ function path_entity_translation_delete(EntityInterface $translation) {
     \Drupal::service('path.alias_storage')->delete($conditions);
   }
 }
+
+/**
+ * Implements hook_entity_storage_load().
+ */
+function path_entity_storage_load(array $entities, $entity_type) {
+  $definitions = \Drupal::service('entity_field.manager')->getFieldStorageDefinitions($entity_type);
+
+  // No definitions were returned.
+  if (!$definitions) {
+    return;
+  }
+
+  // Get any path fields.
+  $path_fields = [];
+  foreach ($definitions as $definition) {
+    if ($definition->getType() == 'path') {
+      $path_fields[] = $definition;
+    }
+  }
+
+  // No path fields were returned.
+  if (!$path_fields) {
+    return;
+  }
+
+  foreach ($entities as $entity) {
+    // Get the path for the entity.
+    $conditions = ['source' => '/' . $entity->urlInfo()->getInternalPath()];
+    if ($entity->language()->getId() != LanguageInterface::LANGCODE_NOT_SPECIFIED) {
+      $conditions['langcode'] = $entity->language()->getId();
+    }
+    $path = \Drupal::service('path.alias_storage')->load($conditions);
+
+    // If a path was not returned, there is no path.
+    if (!$path) {
+      continue;
+    }
+
+    // Add the path to the entity.
+    foreach ($path_fields as $path_field) {
+      $entity->set($path_field->getName(), $path);
+    }
+  }
+}
diff --git a/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php b/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
index 07f1712..aee6775 100644
--- a/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
+++ b/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
@@ -10,7 +10,6 @@
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Language\LanguageInterface;
 use Symfony\Component\Validator\ConstraintViolationInterface;
 
 /**
@@ -31,23 +30,7 @@ class PathWidget extends WidgetBase {
    */
   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
     $entity = $items->getEntity();
-    $path = array();
-    if (!$entity->isNew()) {
-      $conditions = array('source' => '/' . $entity->urlInfo()->getInternalPath());
-      if ($items->getLangcode() != LanguageInterface::LANGCODE_NOT_SPECIFIED) {
-        $conditions['langcode'] = $items->getLangcode();
-      }
-      $path = \Drupal::service('path.alias_storage')->load($conditions);
-      if ($path === FALSE) {
-        $path = array();
-      }
-    }
-    $path += array(
-      'pid' => NULL,
-      'source' => !$entity->isNew() ? '/' . $entity->urlInfo()->getInternalPath() : NULL,
-      'alias' => '',
-      'langcode' => $items->getLangcode(),
-    );
+    $path = $items[$delta];
 
     $element += array(
       '#element_validate' => array(array(get_class($this), 'validateFormElement')),
@@ -55,22 +38,22 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     $element['alias'] = array(
       '#type' => 'textfield',
       '#title' => $element['#title'],
-      '#default_value' => $path['alias'],
+      '#default_value' => !$path->isEmpty() ? $path->get('alias')->getValue() : '',
       '#required' => $element['#required'],
       '#maxlength' => 255,
       '#description' => $this->t('The alternative URL for this content. Use a relative path. For example, enter "/about" for the about page.'),
     );
     $element['pid'] = array(
       '#type' => 'value',
-      '#value' => $path['pid'],
+      '#value' => !$path->isEmpty() ? $path->get('pid')->getValue() : NULL,
     );
     $element['source'] = array(
       '#type' => 'value',
-      '#value' => $path['source'],
+      '#value' => !$entity->isNew() ? '/' . $entity->urlInfo()->getInternalPath() : NULL,
     );
     $element['langcode'] = array(
       '#type' => 'value',
-      '#value' => $path['langcode'],
+      '#value' => !$path->isEmpty() ? $path->getLangcode() : $items->getLangcode(),
     );
     return $element;
   }
