V létě 2011 jsem na tomto blogu popisoval, jak vzdáleně aktualizovat WordPress. O tři roky později znovu řeším stejný problém, situace se však změnila. Dříve jsem měl na server přístup pouze přes FTP, nyní mám SSH.
Myšlenka nového skriptu spočívá v tom, že udržuje zdrojový kód WordPressu i jeho pluginů v SVN pracovních kopiích. Jak se to dělá pro samotný WordPress je popsáno zde. Poprvé je nutno provést SVN checkout nejnovějších tagů jádra WordPressu a jeho pluginů z repozitářů na http://core.svn.wordpress.org resp. http://plugins.svn.wordpress.org. Pro kompletní aktualizaci pak už vždy stačí spustit skript. Sám si zjistí tagy odpovídající nejnovějším verzím a pracovní kopie do nich přepne.
Skript si můžete prohlédnout:
#!/bin/bash
##
## Updates WordPress in this directory to maximum release version.
##
LCYAN="\033[1;35m"
NOCOL="\033[0m"
update() {
svninfo=`svn info 2>/dev/null`
# check that directory is a working copy
if [ "$?" -ne 0 ]; then
echo -e "$LCYAN$(readlink -f .)$NOCOL is not a working copy."
return
fi
oldurl=`echo "$svninfo" | grep '^URL:'`
oldurl=${oldurl##* }
oldversion=${oldurl##*/}
tagurl=${oldurl%/*}
newversion=`svn ls "$tagurl" | sed -e 's/\/$//' | sort --version-sort | tail -n 1`
if [ "$oldversion" == "$newversion" ]; then
echo "$(readlink -f .) is up to date with version $newversion."
else
echo -e "Update $LCYAN`readlink -f .`$NOCOL from version '$LCYAN$oldversion$NOCOL' to '$LCYAN$newversion$NOCOL'?"
select prompt in "Yes" "No but continue" "Abort"; do
case $prompt in
Yes ) break;;
"No but continue" ) return;;
Abort ) exit;;
esac
done
echo ---
svn switch "$tagurl/$newversion"
echo ---
fi
}
if [ "$#" -ne 0 ]; then
echo "Usage: $0"
exit
fi
# main
update
# plugins
pushd wp-content/plugins/ >/dev/null
for plugindir in *; do
if [ -d "$plugindir" ]; then
pushd "$plugindir" >/dev/null
update
popd >/dev/null
fi
done
popd >/dev/null
Také si skript můžete stáhnout.
Leave a Reply