{"id":2928,"date":"2026-10-20T08:39:21","date_gmt":"2026-10-20T07:39:21","guid":{"rendered":"https:\/\/wpgeodirectory.com\/documentation\/article\/wp-all-import-images-duplicate-2\/"},"modified":"2026-10-20T08:39:21","modified_gmt":"2026-10-20T07:39:21","slug":"wp-all-import-images-duplicate-2","status":"publish","type":"gd_place","link":"https:\/\/wpgeodirectory.com\/documentation\/article\/wp-all-import\/wp-all-import-images-duplicate-2\/","title":{"rendered":"Images duplicate every time a WP All Import import runs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If each run of a saved WP All Import job adds the listing images again, the import is giving GeoDirectory image URLs without the IDs of the images it already has. GeoDirectory then treats every image as new, downloads it again, and the first image is added to the Media Library once more as the featured image.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How GeoDirectory stores listing images<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Listing images are saved in GeoDirectory&#8217;s own images field (<code>post_images<\/code>), not in a WordPress gallery. The first image is also added to the Media Library and set as the listing&#8217;s featured image. In an import, the field takes one value with the images separated by <code>::<\/code>, and each image can carry its ID, title and caption separated by <code>|<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-markup\">https:\/\/example.com\/wp-content\/uploads\/2024\/05\/front.jpg|818|Front of the shop|Opening day::https:\/\/example.com\/wp-content\/uploads\/2024\/05\/inside.jpg|819||<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When an image comes with its ID, GeoDirectory only updates its title, caption and order. Without an ID it is downloaded as a new image. The ID is GeoDirectory&#8217;s own image ID, not the Media Library ID, and a GeoDirectory CSV export includes it for every image.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Stop images being imported again<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the images don&#8217;t change between runs, set the saved import to leave images alone when it updates existing listings, and update only the fields that change, such as prices.<\/li>\n\n\n\n<li>Map all listing images to the GeoDirectory images field in the format above. If you also use WP All Import&#8217;s own featured image or gallery options, WordPress and GeoDirectory each add a copy.<\/li>\n\n\n\n<li>If you need to update images on existing listings, start from a GeoDirectory export so each image keeps its ID.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The image format is explained in more detail in <a href=\"https:\/\/wpgeodirectory.com\/documentation\/article\/how-tos\/how-to-format-the-csv-file-for-importing-listing-images\/\">How to format the CSV file for importing listing images<\/a>, and the add-on setup is in the <a href=\"https:\/\/wpgeodirectory.com\/documentation\/article\/wp-all-import\/wp-all-import-setup-guide\/\">WP All Import setup guide<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If each run of a saved WP All Import job adds the listing images again, the import is giving GeoDirectory image URLs without the IDs of the images it already has. GeoDirectory then treats every image as new, downloads it again, and the first image is added to the Media Library once more as the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"closed","template":"","meta":{"footnotes":""},"article\/tags":[],"article\/categories":[213,410],"class_list":["post-2928","gd_place","type-gd_place","status-publish","hentry","gd_placecategory-extensions-features","gd_placecategory-wp-all-import"],"_links":{"self":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/2928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/types\/gd_place"}],"author":[{"embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/comments?post=2928"}],"version-history":[{"count":0,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/2928\/revisions"}],"wp:attachment":[{"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/media?parent=2928"}],"wp:term":[{"taxonomy":"gd_place_tags","embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/tags?post=2928"},{"taxonomy":"gd_placecategory","embeddable":true,"href":"https:\/\/wpgeodirectory.com\/documentation\/wp-json\/wp\/v2\/article\/categories?post=2928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}