---
title: Update Script Wordpress.org Plugins
date: 2025-07-18T14:55:48Z
modified: 2026-09-22T19:51:44Z
permalink: "https://techarticles.co.uk/update-script-wordpress-org-plugins/"
type: post
status: publish
excerpt: ""
wpid: 5446
categories:
  - Automation
  - Blog
  - Coding
  - Plugins
  - Wordpress
timestamp: 2026-09-22T19:51:44Z
tags:
  - Automation
  - Blog
  - Coding
  - Plugins
  - Wordpress
---

One of the last parts of my workflow to automate has been SVN pushes to the WordPress.org repo, i still have two plugins on WordPress.org and they are [webhooks-for-bricks-forms](https://wordpress.org/plugins/webhook-for-bricks-forms) & [hooksure](https://wordpress.org/plugins/hooksure/) they both do similar things send form data over webhook.

Almost all my free plugins moving forward and now are served by GitHub and use my [UUPD](https://github.com/stingray82/uupd) [WordPress Updater Solution](http://uupd.uk "WordPress Updater Solution") to serve updates right in your dashboard for free.

I still have to maintain and work on these plugins although there basic plugins and functionality remains reasonably stable I have up until recently been doing this manually either on the command line or via [tortisesvn](https://tortoisesvn.net/), as I needed to update both I decided to spend the time getting a little automation going via bat scripts. I already have one to push updates from GitHub to the SVN trunk so I need to concentrate on publishing them.

Similar to my normal free plugin release script I wanted to this to ask me for a version number update the stable tag in the readme and the php to match the added release and I want it to commit the trunk and then tag a new release with the inputted version number

The working code is below:

@echo off
setlocal enabledelayedexpansion

REM === Configuration ===
set "WORKING_COPY_PATH=C:\Users\Nathan\svn\webhook-for-bricks-forms"
set "TRUNK_PATH=%WORKING_COPY_PATH%\trunk"
set "PLUGIN_FILE=%TRUNK_PATH%\webhook-for-bricks-forms.php"
set "README_FILE=%TRUNK_PATH%\readme.txt"
set "REPO_URL=https://plugins.svn.wordpress.org/webhook-for-bricks-forms"

REM === Extract plugin slug from REPO_URL ===
for %%A in ("%REPO_URL%") do (
    set "PLUGIN_SLUG=%%~nxA"
)

REM === Prompt for version number ===
set /p VERSION="Enter the new version number (e.g. 1.4.2): "

if "%VERSION%"=="" (
    echo Version number is required. Aborting.
    goto end
)

echo === Updating version numbers with PowerShell ===

REM --- Update PHP version line ---
powershell -Command "(Get-Content '%PLUGIN_FILE%') -replace '^(Version:\s*).+$', '${1}%VERSION%' | Set-Content '%PLUGIN_FILE%'" || (
    echo Failed to update version in PHP file. Aborting.
    goto end
)

REM --- Update Stable tag in readme.txt ---
powershell -Command "(Get-Content '%README_FILE%') -replace '^(Stable tag:\s*).+$', '${1}%VERSION%' | Set-Content '%README_FILE%'" || (
    echo Failed to update version in readme.txt. Aborting.
    goto end
)

echo === Committing changes in trunk ===
cd /d "%TRUNK_PATH%"
svn add --force . >nul
svn commit -m "Preparing for version %VERSION% release"
if %ERRORLEVEL% NEQ 0 (
    echo Commit failed. Aborting.
    goto end
)

echo === Tagging version %VERSION% ===
cd /d "%WORKING_COPY_PATH%"
svn copy "%TRUNK_PATH%" "%REPO_URL%/tags/%VERSION%" -m "Tagging version %VERSION% for release"
if %ERRORLEVEL% NEQ 0 (
    echo Tagging failed. Aborting.
    goto end
)

echo === Refreshing plugin page for %PLUGIN_SLUG% ===
start https://wordpress.org/plugins/%PLUGIN_SLUG%/?refresh

echo === Release %VERSION% completed successfully! &#x1f680 ===

:end
pause
endlocal
```
<span class="line"><span style="color: #F97583">@echo</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">off</span></span>
<span class="line"><span style="color: #F97583">setlocal</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">enabledelayedexpansion</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">REM</span><span style="color: #6A737D"> === Configuration ===</span></span>
<span class="line"><span style="color: #F97583">set</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">WORKING_COPY_PATH</span><span style="color: #F97583">=</span><span style="color: #9ECBFF">C:\Users\Nathan\svn\webhook-for-bricks-forms"</span></span>
<span class="line"><span style="color: #F97583">set</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">TRUNK_PATH</span><span style="color: #F97583">=</span><span style="color: #E1E4E8">%WORKING_COPY_PATH%</span><span style="color: #9ECBFF">\trunk"</span></span>
<span class="line"><span style="color: #F97583">set</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">PLUGIN_FILE</span><span style="color: #F97583">=</span><span style="color: #E1E4E8">%TRUNK_PATH%</span><span style="color: #9ECBFF">\webhook-for-bricks-forms.php"</span></span>
<span class="line"><span style="color: #F97583">set</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">README_FILE</span><span style="color: #F97583">=</span><span style="color: #E1E4E8">%TRUNK_PATH%</span><span style="color: #9ECBFF">\readme.txt"</span></span>
<span class="line"><span style="color: #F97583">set</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">REPO_URL</span><span style="color: #F97583">=</span><span style="color: #9ECBFF">https://plugins.svn.wordpress.org/webhook-for-bricks-forms"</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">REM</span><span style="color: #6A737D"> === Extract plugin slug from REPO_URL ===</span></span>
<span class="line"><span style="color: #F97583">for</span><span style="color: #E1E4E8"> </span><span style="color: #FFAB70">%%A</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">in</span><span style="color: #E1E4E8"> (</span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">%REPO_URL%</span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">) </span><span style="color: #F97583">do</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">set</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">PLUGIN_SLUG</span><span style="color: #F97583">=</span><span style="color: #79B8FF">%%~nxA</span><span style="color: #9ECBFF">"</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">REM</span><span style="color: #6A737D"> === Prompt for version number ===</span></span>
<span class="line"><span style="color: #F97583">set</span><span style="color: #E1E4E8"> /p VERSION</span><span style="color: #F97583">=</span><span style="color: #9ECBFF">"Enter the new version number (e.g. 1.4.2): "</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">if</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">%VERSION%</span><span style="color: #9ECBFF">"</span><span style="color: #F97583">==</span><span style="color: #9ECBFF">""</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> Version number is required. Aborting.</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">goto</span><span style="color: #E1E4E8"> end</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> === Updating version numbers with PowerShell ===</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">REM</span><span style="color: #6A737D"> --- Update PHP version line ---</span></span>
<span class="line"><span style="color: #F97583">powershell</span><span style="color: #E1E4E8"> -Command </span><span style="color: #9ECBFF">"(Get-Content '</span><span style="color: #E1E4E8">%PLUGIN_FILE%</span><span style="color: #9ECBFF">') -replace '^(Version:\s*).+$', '${1}</span><span style="color: #E1E4E8">%VERSION%</span><span style="color: #9ECBFF">' | Set-Content '</span><span style="color: #E1E4E8">%PLUGIN_FILE%</span><span style="color: #9ECBFF">'"</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">||</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> Failed to update version in PHP file. Aborting.</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">goto</span><span style="color: #E1E4E8"> end</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">REM</span><span style="color: #6A737D"> --- Update Stable tag in readme.txt ---</span></span>
<span class="line"><span style="color: #F97583">powershell</span><span style="color: #E1E4E8"> -Command </span><span style="color: #9ECBFF">"(Get-Content '</span><span style="color: #E1E4E8">%README_FILE%</span><span style="color: #9ECBFF">') -replace '^(Stable tag:\s*).+$', '${1}</span><span style="color: #E1E4E8">%VERSION%</span><span style="color: #9ECBFF">' | Set-Content '</span><span style="color: #E1E4E8">%README_FILE%</span><span style="color: #9ECBFF">'"</span><span style="color: #E1E4E8"> </span><span style="color: #F97583">||</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> Failed to update version in readme.txt. Aborting.</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">goto</span><span style="color: #E1E4E8"> end</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> === Committing changes in trunk ===</span></span>
<span class="line"><span style="color: #F97583">cd</span><span style="color: #E1E4E8"> /d </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">%TRUNK_PATH%</span><span style="color: #9ECBFF">"</span></span>
<span class="line"><span style="color: #E1E4E8">svn add --force . </span><span style="color: #F97583">></span><span style="color: #79B8FF">nul</span></span>
<span class="line"><span style="color: #E1E4E8">svn commit -m </span><span style="color: #9ECBFF">"Preparing for version </span><span style="color: #E1E4E8">%VERSION%</span><span style="color: #9ECBFF"> release"</span></span>
<span class="line"><span style="color: #F97583">if</span><span style="color: #E1E4E8"> %ERRORLEVEL% </span><span style="color: #F97583">NEQ</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">0</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> Commit failed. Aborting.</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">goto</span><span style="color: #E1E4E8"> end</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> === Tagging version %VERSION% ===</span></span>
<span class="line"><span style="color: #F97583">cd</span><span style="color: #E1E4E8"> /d </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">%WORKING_COPY_PATH%</span><span style="color: #9ECBFF">"</span></span>
<span class="line"><span style="color: #E1E4E8">svn </span><span style="color: #F97583">copy</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">%TRUNK_PATH%</span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8"> </span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8">%REPO_URL%</span><span style="color: #9ECBFF">/tags/</span><span style="color: #E1E4E8">%VERSION%</span><span style="color: #9ECBFF">"</span><span style="color: #E1E4E8"> -m </span><span style="color: #9ECBFF">"Tagging version </span><span style="color: #E1E4E8">%VERSION%</span><span style="color: #9ECBFF"> for release"</span></span>
<span class="line"><span style="color: #F97583">if</span><span style="color: #E1E4E8"> %ERRORLEVEL% </span><span style="color: #F97583">NEQ</span><span style="color: #E1E4E8"> </span><span style="color: #79B8FF">0</span><span style="color: #E1E4E8"> (</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> Tagging failed. Aborting.</span></span>
<span class="line"><span style="color: #E1E4E8">    </span><span style="color: #F97583">goto</span><span style="color: #E1E4E8"> end</span></span>
<span class="line"><span style="color: #E1E4E8">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> === Refreshing plugin page for %PLUGIN_SLUG% ===</span></span>
<span class="line"><span style="color: #F97583">start</span><span style="color: #E1E4E8"> https://wordpress.org/plugins/%PLUGIN_SLUG%/?refresh</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F97583">echo</span><span style="color: #E1E4E8"> === Release %VERSION% completed successfully! </span><span style="color: #F97583">&</span><span style="color: #E1E4E8">#x1f680 </span><span style="color: #F97583">==</span><span style="color: #E1E4E8">=</span></span>
<span class="line"></span>
<span class="line"><span style="color: #E1E4E8">:</span><span style="color: #F97583">end</span></span>
<span class="line"><span style="color: #F97583">pause</span></span>
<span class="line"><span style="color: #F97583">endlocal</span></span>
<span class="line"></span>
```BAT (Batchfile)

![](https://i.ytimg.com/vi/H6Wc2vGLIsI/maxresdefault.jpg)