- GitHub: https://github.com/pixelgrade/customify
- WordPress.org: https://wordpress.org/plugins/customify/
- Current version: 2.10.6
- Branch:
dev(main development branch)
- Node.js 14 (see
.nvmrc) - Gulp 4 (installed via devDependencies)
- PHP 7.4+
- WordPress 5.9+
nvm use 14
npm installNote: fsevents build warning on macOS is non-fatal (optional dependency).
gulp watchWatches all SCSS and JS files, recompiles on change.
| Command | Description |
|---|---|
gulp start |
Compile all styles and scripts (production) |
gulp watch |
Watch SCSS + JS and recompile on change |
gulp styles-dev |
Compile styles with sourcemaps (expanded) |
gulp styles |
Compile styles (compressed, production) |
gulp scripts |
Minify all JS scripts |
gulp styles-watch |
Watch only SCSS files |
gulp scripts-watch |
Watch only JS files |
gulp build |
Create clean build directory |
gulp zip |
Create distributable ZIP archive |
scss/*.scss- Source stylesheets, compiled tocss/js/customizer/*.js,js/*.js- Source scripts, minified versions get.min.jssuffix- RTL stylesheets are auto-generated with
-rtlsuffix CLAUDE.mdis excluded from zip builds (listed ingulpfile.jsremoveUnneededFiles)
Update version in three places:
customify.php— plugin headerVersion:linecustomify.php—PixCustomifyPlugin::instance()second argumentreadme.txt—Stable tag:header
Also update as needed:
readme.txt—Tested up to:,Requires PHP:,Requires at least:customify.php— matching plugin headersincludes/class-pixcustomify.php—$minimalRequiredPhpVersionproperty (~line 117)
nvm use 14
npx gulp zipOutput: ../Customify-X-X-X.zip (in parent plugins directory)
git push origin dev
gh release create vX.X.X ../Customify-X-X-X.zip --title "vX.X.X" --notes "changelog"To update an existing release zip: gh release upload vX.X.X ../Customify-X-X-X.zip --clobber
SVN repo: https://plugins.svn.wordpress.org/customify/
SVN username: babbardel
# Checkout trunk
svn checkout https://plugins.svn.wordpress.org/customify/trunk /tmp/customify-svn
# Sync from zip (preserves .svn metadata)
unzip -o ../Customify-X-X-X.zip -d /tmp/customify-unzipped
rsync -a --delete --exclude='.svn' /tmp/customify-unzipped/customify/ /tmp/customify-svn/
# Add new files, remove deleted files
cd /tmp/customify-svn
svn status | grep '^\?' | awk '{print $2}' | xargs -I{} svn add "{}"
svn status | grep '^\!' | awk '{print $2}' | xargs -I{} svn delete "{}"
# Commit trunk
echo 'PASSWORD' | svn commit -m "message" --username babbardel --force-interactive
# Tag the release (wordpress.org reads metadata from the tag, not trunk)
echo 'PASSWORD' | svn copy \
https://plugins.svn.wordpress.org/customify/trunk \
https://plugins.svn.wordpress.org/customify/tags/X.X.X \
-m "Tag X.X.X" --username babbardel --force-interactiveImportant: WordPress.org sidebar metadata (Tested up to, Requires PHP, etc.) comes from the tagged version's readme.txt, not trunk. If you update metadata after tagging, you must delete and recreate the tag:
echo 'PASSWORD' | svn delete https://plugins.svn.wordpress.org/customify/tags/X.X.X -m "Remove old tag" --username babbardel --force-interactive
echo 'PASSWORD' | svn copy https://plugins.svn.wordpress.org/customify/trunk https://plugins.svn.wordpress.org/customify/tags/X.X.X -m "Re-tag X.X.X" --username babbardel --force-interactiveNote: --non-interactive does NOT work for SVN auth here. Must use --force-interactive with echo pipe.
All wp_ajax_ handlers must have both:
- Nonce verification:
check_ajax_referer() - Capability check:
current_user_can('manage_options')
Current AJAX handlers:
customify_migrate_customizations_from_parent_to_child_theme—extras.phpcustomify_style_manager_user_feedback—class-customify-style-manager.php
customify/v1/delete_theme_mod—class-customify-settings.php(has both nonce + capability check)
class-customify-settings.php— usescheck_admin_referer()+manage_optionscapability viaadd_options_page()
- Minimum PHP 7.4 (set in
class-pixcustomify.php:$minimalRequiredPhpVersion) - Added null safety guards for
get_option(),apply_filters(),preg_split()returns (PHP 8.x compat) - All classes have explicit property declarations (PHP 8.2 dynamic properties deprecation)
customify.php— main plugin file, version, bootstrapincludes/class-pixcustomify.php— main plugin class, hooks, enqueuingincludes/extras.php— helper functions, theme migration AJAX handlerincludes/class-customify-style-manager.php— Style Manager, color/font palettes, feedback handlerincludes/class-customify-settings.php— admin settings page, REST API, nonce handlingincludes/class-customify-color-palettes.php— color palette renderingincludes/class-customify-block-editor.php— Gutenberg integrationgulpfile.js— build system configuration
- URL: http://barba.local/
- Admin: http://barba.local/wp-admin/
- Plugin path: /Users/georgeolaru/Local Sites/barba/app/public/wp-content/plugins/customify