{"id":235738,"date":"2025-05-30T03:18:25","date_gmt":"2025-05-30T03:18:25","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bulk-page-duplicator\/"},"modified":"2026-10-21T07:19:34","modified_gmt":"2026-10-21T07:19:34","slug":"bulk-page-duplicator","status":"publish","type":"plugin","link":"https:\/\/vec.wordpress.org\/plugins\/bulk-page-duplicator\/","author":16419111,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.3","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"Bulk Page Duplicator","header_author":"Nazim Husain","header_description":"Create multiple pages by duplicating an existing page and replacing specific text with different values.","assets_banners_color":"797aa7","last_updated":"2026-10-21 07:19:34","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/nazim848","header_plugin_uri":"","header_author_uri":"https:\/\/nazimansari.com","rating":5,"author_block_rating":0,"active_installs":500,"downloads":4005,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"nazim848","date":"2025-05-30 03:18:07","revision":3303274},"1.0.1":{"tag":"1.0.1","author":"nazim848","date":"2026-01-29 05:24:37","revision":3449215},"1.1.0":{"tag":"1.1.0","author":"nazim848","date":"2026-02-02 11:26:54","revision":3451996},"1.1.1":{"tag":"1.1.1","author":"nazim848","date":"2026-08-13 10:24:49","revision":3644914},"1.2.0":{"tag":"1.2.0","author":"nazim848","date":"2026-10-19 14:54:46","revision":3755034},"1.3.0":{"tag":"1.3.0","author":"nazim848","date":"2026-10-21 07:19:34","revision":3757851}},"upgrade_notice":{"1.3.0":"<p>Adds named CSV placeholders, custom field replacement, a Generated Pages List block\/shortcode and WP-CLI. Exact-case placeholders now preserve input capitalization; preview existing templates with Dry Run.<\/p>","1.2.0":"<p>Adds one-click Duplicate, reusable Page Generators and Template Sync to push template changes to generated pages, plus All in One SEO 4 and multi-placeholder fixes.<\/p>","1.1.1":"<p>Security, data-integrity, rollback, compatibility, and large-site performance fixes.<\/p>","1.1.0":"<p>Major release with Dry Run preview, CSV import, rollback history, taxonomy assignment, and improved builder support.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3645195,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3645195,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3645195,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3645195,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3757851,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/tools.php?page=bulk-page-duplicator\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"bulk-page-duplicator\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":{"bulk-page-duplicator\/generated-pages":{"name":"bulk-page-duplicator\/generated-pages","title":"Generated Pages List"}},"tagged_versions":["1.0.0","1.0.1","1.1.0","1.1.1","1.2.0","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3757850,"resolution":"1","location":"assets","locale":"","width":3840,"height":2160},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3757850,"resolution":"10","location":"assets","locale":"","width":2780,"height":1770},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3757850,"resolution":"11","location":"assets","locale":"","width":2880,"height":2100},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3757850,"resolution":"12","location":"assets","locale":"","width":2720,"height":696},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3757850,"resolution":"13","location":"assets","locale":"","width":2880,"height":2100},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3757850,"resolution":"2","location":"assets","locale":"","width":2832,"height":2060},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3757850,"resolution":"3","location":"assets","locale":"","width":2780,"height":2046},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3757850,"resolution":"4","location":"assets","locale":"","width":2780,"height":2044},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3757850,"resolution":"5","location":"assets","locale":"","width":2780,"height":1270},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3757850,"resolution":"6","location":"assets","locale":"","width":2400,"height":1200},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3757850,"resolution":"7","location":"assets","locale":"","width":2780,"height":1464},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3757850,"resolution":"8","location":"assets","locale":"","width":2780,"height":338},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3757850,"resolution":"9","location":"assets","locale":"","width":2780,"height":1486}},"screenshots":{"1":"How it works: turn a template and CSV location data into individual pages, then preview, sync and roll back runs.","2":"Bulk duplication with named CSV placeholders: import column headers as {{city}} and {{phone_number}}, including quoted values containing commas, and check the live preview.","3":"Page Generators: every value with its generated page, status and edit\/view links. New values are created on the next run.","4":"Template Sync: preview which pages will change. Pages edited by hand are skipped unless you choose to overwrite them.","5":"One-click \"Duplicate\" and \"Bulk Duplicate\" links in the Pages list. Copies are saved as drafts.","6":"Dry Run preview: see every title and slug before anything is created.","7":"Results log with filters and CSV export, and Recent Operations to roll back a whole run.","8":"All your Page Generators with their template, progress and last run.","9":"The editor box: \"Duplicate as new draft\", how many pages a template generated, and a shortcut to Template Sync.","10":"Custom field replacement: choose where placeholders are replaced, including public custom fields and nested data used by ACF and Meta Box.","11":"Generated Pages List block: choose a template or generator, set sorting and columns, and preview published pages in the editor.","12":"An \"Areas we serve\" page using the generated pages listing with two columns and excerpts. Appearance follows your theme; the same listing is available through a shortcode.","13":"WP-CLI: list generators, preview a generator run and dry-run a template sync with protection for manually edited pages."}},"plugin_section":[],"plugin_tags":[67861,2814,24939,23177,131713],"plugin_category":[],"plugin_contributors":[240994],"plugin_business_model":[],"class_list":["post-235738","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-duplicate","plugin_tags-clone","plugin_tags-duplicate-page","plugin_tags-duplicate-post","plugin_tags-page-generator","plugin_contributors-nazim848","plugin_committers-nazim848"],"banners":{"banner":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/banner-772x250.png?rev=3645195","banner_2x":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/banner-1544x500.png?rev=3645195","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/icon-128x128.png?rev=3645195","icon_2x":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/icon-256x256.png?rev=3645195","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-1.png?rev=3757850","caption":"How it works: turn a template and CSV location data into individual pages, then preview, sync and roll back runs."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-2.png?rev=3757850","caption":"Bulk duplication with named CSV placeholders: import column headers as {{city}} and {{phone_number}}, including quoted values containing commas, and check the live preview."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-3.png?rev=3757850","caption":"Page Generators: every value with its generated page, status and edit\/view links. New values are created on the next run."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-4.png?rev=3757850","caption":"Template Sync: preview which pages will change. Pages edited by hand are skipped unless you choose to overwrite them."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-5.png?rev=3757850","caption":"One-click \"Duplicate\" and \"Bulk Duplicate\" links in the Pages list. Copies are saved as drafts."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-6.png?rev=3757850","caption":"Dry Run preview: see every title and slug before anything is created."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-7.png?rev=3757850","caption":"Results log with filters and CSV export, and Recent Operations to roll back a whole run."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-8.png?rev=3757850","caption":"All your Page Generators with their template, progress and last run."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-9.png?rev=3757850","caption":"The editor box: \"Duplicate as new draft\", how many pages a template generated, and a shortcut to Template Sync."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-10.png?rev=3757850","caption":"Custom field replacement: choose where placeholders are replaced, including public custom fields and nested data used by ACF and Meta Box."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-11.png?rev=3757850","caption":"Generated Pages List block: choose a template or generator, set sorting and columns, and preview published pages in the editor."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-12.png?rev=3757850","caption":"An \"Areas we serve\" page using the generated pages listing with two columns and excerpts. Appearance follows your theme; the same listing is available through a shortcode."},{"src":"https:\/\/ps.w.org\/bulk-page-duplicator\/assets\/screenshot-13.png?rev=3757850","caption":"WP-CLI: list generators, preview a generator run and dry-run a template sync with protection for manually edited pages."}],"raw_content":"<!--section=description-->\n<p>Bulk Page Duplicator turns one page into many. Duplicate any page or post in a single click, or build a template once (for example \"Plumber in London\") and generate a page for every city, service or product, with your text replaced on each one.<\/p>\n\n<p>When the template changes, push the change to every generated page with Template Sync, and keep your list of cities in a reusable Page Generator so adding a new one is a single click.<\/p>\n\n<p>Import CSV column headers as named placeholders such as <code>{{city}}<\/code>, replace text in custom fields, and build an \"Areas we serve\" hub with the Generated Pages List block or shortcode. WP-CLI commands let you run generators and template syncs from the command line.<\/p>\n\n<p>Every feature is free.<\/p>\n\n<h4>Who it is for<\/h4>\n\n<ul>\n<li>Agencies and site owners building location, service or landing pages at scale.<\/li>\n<li>SEO teams who need titles, descriptions and metadata replaced on every page.<\/li>\n<li>Anyone who just wants a quick \"Duplicate\" link for pages, posts and custom post types.<\/li>\n<\/ul>\n\n<h4>One-click duplication<\/h4>\n\n<ul>\n<li>\"Duplicate\" link in the Pages and Posts lists, the admin bar, the classic editor and the block editor.<\/li>\n<li>\"Duplicate\" bulk action to copy several selected items at once.<\/li>\n<li>Copies content, custom fields, featured image, categories, tags and page builder data. Copies are saved as drafts.<\/li>\n<\/ul>\n\n<h4>Bulk generation<\/h4>\n\n<ul>\n<li>Pick a template, enter the text to replace (for example <code>London<\/code>, or <code>London, UK<\/code> for several placeholders) and add one line of values per page.<\/li>\n<li>Paste values or import a <code>.csv<\/code> \/ <code>.txt<\/code> file. Quoted CSV values can contain commas; column headers can become named placeholders such as <code>{{city}}<\/code> and <code>{{phone_number}}<\/code>.<\/li>\n<li>Replaces text in titles, slugs, content, excerpts, custom fields, page builder data and SEO fields. The placeholder exactly as typed inserts the value exactly as entered (<code>London<\/code> \u2192 <code>iPhone Town<\/code>); other case variants get matching case (<code>LONDON<\/code> \u2192 <code>IPHONE TOWN<\/code>).<\/li>\n<li>Choose draft or published, a parent page, categories and tags, and whether to copy the featured image and the template's terms.<\/li>\n<li>Dry Run preview, live progress with ETA, a results log with CSV export, and one-click rollback of a whole run.<\/li>\n<li>Works with pages, posts and any public custom post type. Existing slugs are skipped, never overwritten.<\/li>\n<\/ul>\n\n<h4>Page Generators<\/h4>\n\n<ul>\n<li>Save a template, its placeholders and its list of values as a generator (<code>Tools &gt; Page Generators<\/code>, or <code>Save as Generator<\/code> on the bulk screen).<\/li>\n<li>Run it again at any time: only missing pages are created.<\/li>\n<li>Edit a value and its page is updated in place; remove a value and its page is moved to the trash (after confirmation).<\/li>\n<li>See every value with its page, status and edit\/view links. Pages you created earlier from the same template are linked, not duplicated.<\/li>\n<\/ul>\n\n<h4>Template Sync<\/h4>\n\n<ul>\n<li>Edit the template, then click <code>Sync changes<\/code> in its <code>Bulk Page Duplicator<\/code> box in the editor.<\/li>\n<li>Choose what to push: content, excerpt, custom fields, page builder data, SEO meta, featured image, page template, terms, and (with confirmation) titles or slugs.<\/li>\n<li>Preview which pages will change. Pages edited by hand since they were generated are skipped unless you choose to overwrite them.<\/li>\n<li>A revision is saved before each page changes, including page builder data, so any sync can be undone from the Revisions screen.<\/li>\n<\/ul>\n\n<h4>Generated Pages List<\/h4>\n\n<ul>\n<li>Add the \"Generated Pages List\" block to a hub page and choose a template or generator, sort order, columns and excerpts.<\/li>\n<li>Or use <code>[bpd_generated_pages template=\"123\" columns=\"3\" orderby=\"title\" show_excerpt=\"yes\"]<\/code>. Replace <code>123<\/code> with your template ID, or use <code>generator=\"45\"<\/code> to select a generator instead.<\/li>\n<li>With neither ID set, a generated page lists its siblings and a template lists its generated pages. The current page is excluded by default.<\/li>\n<li>Lists published items only, with 100 items by default. Set <code>limit=\"500\"<\/code> for the maximum of 500 items; columns range from 1 to 4.<\/li>\n<\/ul>\n\n<h4>WP-CLI<\/h4>\n\n<p>Run commands as a WordPress administrator with <code>--user=&lt;ID-or-login&gt;<\/code>:<\/p>\n\n<ul>\n<li>List generators: <code>wp bulk-page-duplicator generator list --user=admin<\/code><\/li>\n<li>Preview a generator run: <code>wp bulk-page-duplicator generator run 45 --dry-run --user=admin<\/code><\/li>\n<li>Run a generator: <code>wp bulk-page-duplicator generator run 45 --user=admin<\/code>. Add <code>--no-update<\/code> to create missing pages without updating changed rows.<\/li>\n<li>Preview a template sync: <code>wp bulk-page-duplicator sync 123 --fields=content,excerpt --dry-run --user=admin<\/code>. Remove <code>--dry-run<\/code> to apply it; add <code>--overwrite-edited<\/code> only if you want to replace hand-edited pages too.<\/li>\n<\/ul>\n\n<p>Replace the example IDs and <code>admin<\/code> with your own template, generator and administrator account.<\/p>\n\n<h4>Works with<\/h4>\n\n<ul>\n<li>Page builders: Elementor, Beaver Builder, Bricks.<\/li>\n<li>SEO plugins: Yoast SEO, Rank Math, All in One SEO, SEOPress.<\/li>\n<\/ul>\n\n<h3>How It Works<\/h3>\n\n<ol>\n<li>Go to <code>Tools &gt; Bulk Page Duplicator<\/code>.<\/li>\n<li>Choose a post type and select the template.<\/li>\n<li>Enter the placeholder text, for example <code>London<\/code> or <code>London, UK<\/code>.<\/li>\n<li>Add one line of replacement values per page, or import a CSV\/TXT file.<\/li>\n<li>Choose where to replace text (title, slug, content, custom fields, page builder data, SEO data) and the other options.<\/li>\n<li>Click <code>Dry Run (Preview)<\/code> to check the result, then <code>Start Duplication<\/code>.<\/li>\n<li>Review the Results Log. Use Recent Operations to roll back a run if needed, or <code>Save as Generator<\/code> to manage these pages later.<\/li>\n<\/ol>\n\n<h3>CSV\/TXT Format Guide<\/h3>\n\n<h4>Single placeholder<\/h4>\n\n<p>If the placeholder is <code>London<\/code>, use one value per line:<\/p>\n\n<pre><code>New York\nParis\nChicago\n<\/code><\/pre>\n\n<h4>Multiple placeholders and quoted values<\/h4>\n\n<p>If the placeholders are <code>London, UK<\/code>, each line must contain matching comma-separated values. Wrap a value containing a comma in double quotes:<\/p>\n\n<pre><code>New York, USA\n\"Paris, France\", EU\nToronto, Canada\n<\/code><\/pre>\n\n<p>One line creates one item. Empty lines are ignored; quoted fields containing line breaks are not supported.<\/p>\n\n<h4>Column headers and named placeholders<\/h4>\n\n<p>When importing a CSV, the plugin offers to turn a first row of column names into placeholders. For example:<\/p>\n\n<pre><code>City,Phone Number\nManchester,0161 496 0000\nBirmingham,0121 496 0000\n<\/code><\/pre>\n\n<p>Accept the header suggestion to use <code>{{city}}, {{phone_number}}<\/code> as your placeholders. Write those tokens in your template's title, content or custom fields wherever each value should appear. The header row is removed from the replacement values when you accept it.<\/p>\n\n<h3>Compatibility<\/h3>\n\n<ul>\n<li>WordPress 5.0 or later, tested up to 7.1.<\/li>\n<li>PHP 7.2 or later.<\/li>\n<li>Pages, posts and any public custom post type.<\/li>\n<li>Page builders: Elementor, Beaver Builder, Bricks.<\/li>\n<li>SEO plugins: Yoast SEO, Rank Math, All in One SEO, SEOPress.<\/li>\n<\/ul>\n\n<h3>Usage Tips<\/h3>\n\n<ul>\n<li>Use unique placeholders (for example <code>CITYNAME<\/code>) to avoid accidental replacements.<\/li>\n<li>Start with <code>Draft<\/code> status for review workflows.<\/li>\n<li>Use Dry Run before large batches.<\/li>\n<li>Keep the browser tab open during long runs for progress updates.<\/li>\n<li>Use Recent Operations to rollback quickly if required.<\/li>\n<\/ul>\n\n<h3>License<\/h3>\n\n<p>Bulk Page Duplicator is free software released under the GPLv2 or later.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress Plugins screen.<\/li>\n<li>Activate <code>Bulk Page Duplicator<\/code> from <code>Plugins<\/code>.<\/li>\n<li>Go to <code>Tools &gt; Bulk Page Duplicator<\/code>.<\/li>\n<li>Select your template and start generating content.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20duplicate%20a%20single%20page%3F\"><h3>How do I duplicate a single page?<\/h3><\/dt>\n<dd><p>Hover over the page in <code>Pages &gt; All Pages<\/code> and click <code>Duplicate<\/code>, or use <code>Duplicate<\/code> in the admin bar or the editor. The copy is saved as a draft with the same content, custom fields, featured image and terms.<\/p><\/dd>\n<dt id=\"can%20i%20duplicate%20custom%20post%20types%20%28cpts%29%3F\"><h3>Can I duplicate custom post types (CPTs)?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports any public post type.<\/p><\/dd>\n<dt id=\"does%20it%20skip%20duplicate%20slugs%3F\"><h3>Does it skip duplicate slugs?<\/h3><\/dt>\n<dd><p>Yes. If a generated slug already exists for that post type, the item is skipped and logged.<\/p><\/dd>\n<dt id=\"can%20i%20preview%20before%20creating%20content%3F\"><h3>Can I preview before creating content?<\/h3><\/dt>\n<dd><p>Yes. Use <code>Dry Run (Preview)<\/code> to see totals, created\/skipped counts, titles, and slugs.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20a%20bulk%20operation%3F\"><h3>Can I undo a bulk operation?<\/h3><\/dt>\n<dd><p>Yes. Recent Operations includes rollback to delete items created by a recorded operation.<\/p><\/dd>\n<dt id=\"who%20can%20use%20this%20plugin%20screen%3F\"><h3>Who can use this plugin screen?<\/h3><\/dt>\n<dd><p>Users with administrative capability (<code>manage_options<\/code>) can run bulk duplication, Page Generators and Template Sync. Anyone who can edit an item and create items of its type can use the one-click \"Duplicate\" links.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20pages%20i%20edited%20by%20hand%20when%20i%20sync%20a%20template%3F\"><h3>What happens to pages I edited by hand when I sync a template?<\/h3><\/dt>\n<dd><p>Template Sync detects items changed since they were generated or last synced and skips them unless you tick \"Overwrite\". A revision is saved before any item is changed.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20delete%20my%20generated%20pages%3F\"><h3>Does uninstalling delete my generated pages?<\/h3><\/dt>\n<dd><p>No. Uninstalling removes the plugin's settings, history and generators, but generated pages are kept.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20page%20builders%3F\"><h3>Does this work with page builders?<\/h3><\/dt>\n<dd><p>Yes. It supports Elementor, Beaver Builder, and Bricks data replacement when present.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20seo%20plugins%3F\"><h3>Does this work with SEO plugins?<\/h3><\/dt>\n<dd><p>Yes. It supports metadata replacement for Yoast SEO, Rank Math, All in One SEO, and SEOPress.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20links%20to%20my%20generated%20pages%3F\"><h3>How do I show links to my generated pages?<\/h3><\/dt>\n<dd><p>Add the \"Generated Pages List\" block or <code>[bpd_generated_pages template=\"123\"]<\/code> shortcode to a hub page. Replace <code>123<\/code> with your template ID. Only published items are listed.<\/p><\/dd>\n<dt id=\"can%20i%20replace%20text%20in%20acf%20or%20other%20custom%20fields%3F\"><h3>Can I replace text in ACF or other custom fields?<\/h3><\/dt>\n<dd><p>Yes. Select \"Custom Fields\" in bulk duplication or a generator, or \"Custom fields\" in Template Sync. It replaces text in public custom fields, including nested array values used by ACF, Meta Box and similar plugins. Internal field keys beginning with an underscore are left unchanged. Untick this option to copy custom field values without replacing their text during duplication.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>Yes. Every feature is included.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation%20ready%3F\"><h3>Is the plugin translation ready?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses the <code>bulk-page-duplicator<\/code> text domain and includes a POT file in <code>languages\/<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li>Named placeholders from CSV column headers: <code>City,Phone Number<\/code> can become <code>{{city}}, {{phone_number}}<\/code>.<\/li>\n<li>Quoted CSV values containing commas, in bulk duplication and Page Generators.<\/li>\n<li>Custom field replacement in bulk duplication, Page Generators and Template Sync, including nested field data used by ACF, Meta Box and similar plugins.<\/li>\n<li>\"Generated Pages List\" block and <code>[bpd_generated_pages]<\/code> shortcode, with template or generator selection, sorting, columns and optional excerpts.<\/li>\n<li>WP-CLI commands to list and run generators and sync templates, with dry runs.<\/li>\n<\/ul>\n\n<p><strong>Changed<\/strong><\/p>\n\n<ul>\n<li>A placeholder matching exactly as typed now inserts the value exactly as entered, preserving names such as \"iPhone Town\" and \"McAllen\". Other case variants still receive matching capitalization. Check existing templates with Dry Run before generating new pages.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li>One-click \"Duplicate\" links in the Pages and Posts lists, the admin bar, the classic editor and the block editor, plus a \"Duplicate\" bulk action.<\/li>\n<li>\"Bulk Duplicate\" link on each page that opens the bulk tool with that page as the template.<\/li>\n<li>Page Generators (Tools &gt; Page Generators): save a template, its placeholders and values, and run it again at any time. New values create pages, edited values update their pages, and removed values move their pages to the trash after confirmation.<\/li>\n<li>\"Save as Generator\" button on the bulk duplication screen. Pages created earlier from the same template are linked instead of duplicated.<\/li>\n<li>Template Sync: push template changes (content, excerpt, Elementor, Beaver Builder, Bricks, SEO meta, featured image, page template, terms, title, slug) to every generated page, with a preview, hand-edit protection and a revision saved before each change.<\/li>\n<li>Editor box showing how many pages a template generated, or which template a page came from.<\/li>\n<li>\"Copy Template Terms\" option, and an \"Open\" link on the Plugins screen.<\/li>\n<\/ul>\n\n<p><strong>Improved<\/strong><\/p>\n\n<ul>\n<li>Bulk duplication now copies the template's excerpt (with placeholder replacement) and menu order.<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li>All in One SEO 4 titles, descriptions, social titles and focus keyphrases are now copied and replaced.<\/li>\n<li>Multiple placeholders no longer interfere with each other (for example the \"uk\" in \"Dukeville\" when \"UK\" is also a placeholder).<\/li>\n<li>Backslashes in content and Beaver Builder settings are kept.<\/li>\n<li>Page builder and SEO options are no longer saved as off while that plugin is inactive. If Elementor replacement was turned off this way, tick \"Elementor Data\" once to turn it back on.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Hardened AJAX authorization and output handling.<\/li>\n<li>Fixed rollback tracking for concurrent and multi-batch operations.<\/li>\n<li>Preserved multi-valued metadata and optional featured image and Elementor behavior.<\/li>\n<li>Improved large-site template, taxonomy, and dry-run performance.<\/li>\n<li>Added complete uninstall cleanup and WordPress 5.0-compatible history dates.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added support for duplicating any public post type.<\/li>\n<li>Added multiple placeholder replacement.<\/li>\n<li>Added CSV\/TXT import for replacement values.<\/li>\n<li>Added Dry Run preview mode.<\/li>\n<li>Added searchable template selector with thumbnails and metadata.<\/li>\n<li>Added featured image copy option.<\/li>\n<li>Added enhanced results log with summaries, filters, and CSV export.<\/li>\n<li>Added real-time progress feedback with ETA and current item tracking.<\/li>\n<li>Added saved user preferences.<\/li>\n<li>Added taxonomy term assignment for generated items.<\/li>\n<li>Added operation history with rollback support.<\/li>\n<li>Added improved validation and duplicate prevention.<\/li>\n<li>Added extended page builder support for Beaver Builder and Bricks.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Improved capitalization handling for hyphenated names.<\/li>\n<li>Improved multi-word placeholder replacement in slugs.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Duplicate pages in one click, generate hundreds from a template, and keep them up to date with Page Generators and Template Sync.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/235738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=235738"}],"author":[{"embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nazim848"}],"wp:attachment":[{"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=235738"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=235738"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=235738"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=235738"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=235738"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/vec.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=235738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}