{"id":13033,"date":"2011-04-26T16:00:14","date_gmt":"2011-04-26T16:00:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/wp-clone-template\/"},"modified":"2026-08-19T00:45:03","modified_gmt":"2026-08-19T00:45:03","slug":"wp-clone-template","status":"publish","type":"plugin","link":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-clone-template\/","author":1806484,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0","stable_tag":"3.0","tested":"7.0.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Export Themes","header_author":"Sergio Milardovich","header_description":"","assets_banners_color":"57bc3a","last_updated":"2026-08-19 00:45:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/wp-clone-template\/","header_author_uri":"https:\/\/milardovich.com.ar\/","rating":4.9,"author_block_rating":0,"active_installs":2000,"downloads":123332,"num_ratings":13,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"milardovich","date":"2011-11-29 05:05:32"},"1.5":{"tag":"1.5","author":"milardovich","date":"2011-11-29 05:10:09"},"2.0":{"tag":"2.0","author":"milardovich","date":"2015-03-09 03:42:56"},"2.1":{"tag":"2.1","author":"milardovich","date":"2018-09-22 01:26:56"},"2.2":{"tag":"2.2","author":"milardovich","date":"2020-04-10 17:24:44"},"3.0":{"tag":"3.0","author":"milardovich","date":"2026-08-19 00:45:03"}},"upgrade_notice":{"3.0":"<p>Required update: 2.12 cannot be activated on PHP 8 and its export was broken. Also fixes a\nmissing CSRF check and stops leaving exported themes publicly downloadable.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":1,"5":12},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1108526,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":1108526,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":1108529,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":501},"banner-772x250.png":{"filename":"banner-772x250.png","revision":1108529,"resolution":"772x250","location":"assets","locale":"","width":770,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.5","2.0","2.1","2.2","3.0"],"block_files":[],"assets_screenshots":{"screenshot-2.png":{"filename":"screenshot-2.png","revision":3653686,"resolution":"2","location":"plugin","width":1044,"height":137},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3653686,"resolution":"1","location":"plugin","width":304,"height":164},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3653686,"resolution":"3","location":"plugin","width":1360,"height":720}},"screenshots":{"1":"\"Export\" option in the Appearance menu.","2":"The export screen."}},"plugin_section":[],"plugin_tags":[151,2814,1859,12641,1249],"plugin_category":[43,59],"plugin_contributors":[79325],"plugin_business_model":[],"class_list":["post-13033","plugin","type-plugin","status-publish","hentry","plugin_tags-backup","plugin_tags-clone","plugin_tags-export","plugin_tags-exporter","plugin_tags-themes","plugin_category-customization","plugin_category-utilities-and-tools","plugin_contributors-milardovich","plugin_committers-milardovich"],"banners":{"banner":"https:\/\/ps.w.org\/wp-clone-template\/assets\/banner-772x250.png?rev=1108529","banner_2x":"https:\/\/ps.w.org\/wp-clone-template\/assets\/banner-1544x500.png?rev=1108529","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wp-clone-template\/assets\/icon-128x128.png?rev=1108526","icon_2x":"https:\/\/ps.w.org\/wp-clone-template\/assets\/icon-256x256.png?rev=1108526","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wp-clone-template\/trunk\/screenshot-1.png?rev=3653686","caption":"\"Export\" option in the Appearance menu."},{"src":"https:\/\/ps.w.org\/wp-clone-template\/trunk\/screenshot-2.png?rev=3653686","caption":"The export screen."},{"src":"https:\/\/ps.w.org\/wp-clone-template\/trunk\/screenshot-3.png?rev=3653686","caption":""}],"raw_content":"<!--section=description-->\n<p>With this plugin you can export any installed theme as a <code>.zip<\/code> file and then install that\nsame theme on another server through the normal \"Upload Theme\" screen.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Go to Appearance &gt; Export, pick the theme you want and press \"Export\". Your browser downloads\na <code>.zip<\/code> file. On the other site, go to Appearance &gt; Themes &gt; Add New &gt; Upload Theme, choose\nthat file and press \"Install Now\".<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>A new \"Export\" item appears under the \"Appearance\" menu.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"who%20can%20export%20a%20theme%3F\"><h3>Who can export a theme?<\/h3><\/dt>\n<dd><p>Users who can install themes (administrators on a single site, super admins on multisite).\nAn export contains the theme's full PHP source, so the plugin no longer settles for the\nweaker <code>manage_options<\/code> check it used up to 2.12. You can change this with the\n    wpct_capability filter.<\/p><\/dd>\n<dt id=\"are%20development%20files%20included%3F\"><h3>Are development files included?<\/h3><\/dt>\n<dd><p>.git, <code>.svn<\/code>, <code>.hg<\/code>, <code>node_modules<\/code> and <code>.DS_Store<\/code> are left out. Use the\n    wpct_should_skip_file filter to change that.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0<\/h4>\n\n<ul>\n<li>Compatible with WordPress 7.0 and PHP 8.<\/li>\n<li>Fixed: the plugin could not be activated at all on PHP 8. The activation hook pointed at\n  install_wpct, but the function is called <code>wpct_install_wpct<\/code>; an invalid callback is a\nfatal TypeError since PHP 8.<\/li>\n<li>Fixed: exporting died with \"Path cannot be empty\". The bundled PclZip library still used a\nPHP 4 style constructor, which PHP 8 no longer treats as a constructor, so the archive name\nwas never set. Exports now use ZipArchive, and fall back to the maintained copy of PclZip\nthat ships with WordPress.<\/li>\n<li>Fixed: removed the third argument of <code>define()<\/code>, dropped in PHP 8.<\/li>\n<li>Security: the export form had no nonce and no capability check on submit, so any logged-in\nvisitor could be made to trigger an export through a crafted request. Both are enforced now.<\/li>\n<li>Security: the requested theme name was pasted straight into a filesystem path. It is now\nvalidated against the list of installed themes.<\/li>\n<li>Security: archives were written into the plugin's own folder and served by redirect, which\nleft every export downloadable by anyone who guessed the URL. They are now built outside the\nweb root, streamed to the browser and deleted immediately. Activating this version also\ndeletes any archive left behind by an older one.<\/li>\n<li>Removed: <code>session_start()<\/code> and <code>ob_start()<\/code> on every request, which broke page caching and\nemitted notices.<\/li>\n<li>Removed: the bundled 5,700 line copy of PclZip.<\/li>\n<li>Fixed: the theme list no longer comes from a hand-rolled <code>readdir()<\/code> on a path guessed with\n  substr($_SERVER['SCRIPT_FILENAME'], 0, -19). It uses <code>wp_get_themes()<\/code>, so themes in a\ncustom theme root are listed too, with their real names.<\/li>\n<li>Fixed: all output is escaped, and the form no longer relies on PHP short open tags.<\/li>\n<li>Added: proper internationalisation with the <code>wp-clone-template<\/code> text domain.<\/li>\n<li>Added: <code>wpct_capability<\/code> and <code>wpct_should_skip_file<\/code> filters.<\/li>\n<\/ul>\n\n<h4>2.12<\/h4>\n\n<ul>\n<li>Typo fixed<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Warning fixed<\/li>\n<li>Language functions added<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Security bug fixed<\/li>\n<li>Old zip files are automatically deleted<\/li>\n<li>Better session management<\/li>\n<li>100% WP 4.0 Compatible<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>Permisson problems fixed.<\/li>\n<li>Warnings added.<\/li>\n<li>Directory structure changed.<\/li>\n<\/ul>","raw_excerpt":"Export any installed theme as a .zip file you can upload to another WordPress site.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/13033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=13033"}],"author":[{"embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/milardovich"}],"wp:attachment":[{"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=13033"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=13033"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=13033"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=13033"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=13033"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pap-aw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=13033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}