WordPress: Kommentare öffnen

Über den Beitrag WordPress Kommentare sperren wurde dargestellt, wie mittels eines einfachen Windows-Skripts die Kommentarfunktion veröffentlichter Posts deaktiviert werden kann. Die bei diesem Vorgang erzeugte Protokolldatei soll nun dazu dienen diesen Vorgang wieder rückgängig zu machen:

  1. Die Batchdatei benötigt zunächst zwingend den Namen der Protokolldatei. Er wird dem Batchaufruf als Parameter beigefügt. Zusätzlich folgt noch eine Prüfung, ob diese Datei im Verzeichnis tatsächlich existiert.
  2. Anschließend wird das passende SQL-Statement für ein Update der MySQL-Tabelle wp_posts erzeugt.
  3. In einer Schleife (for) wird die Protokolldatei ab der zweiten Zeile (die erste Zeile enthält die Spaltenüberschriften) eingelesen, die ID dem SQL-Statement hinzugefügt und per plink an den Server gesendet.

Dieser Ablauf scheint relativ aufwendig zu sein, da für jeden Protokolleintrag eine Verbindung zum Server hergestellt werden muß. Da das Datenvolumen selbst aber sehr begrenzt ist, läuft die Übertragung im Sekundentakt ab. Die Batch-Datei könnte dabei folgende Struktur haben:

@echo off
::
set Nachricht=Update der Post-Kommentarfunktionen erfolgt
::
if [%1] equ [] (
  set Nachricht=die Protokolldatei muß angegeben werden ^
  & goto batchend)
::
if not exist %1 (
  set Nachricht=die Protokolldatei wurde nicht gefunden ^
  & goto batchend)
::
set sql=
set sql=%sql% update wp_posts
set sql=%sql% set comment_status = 'open'
set sql=%sql% where ID = %%r and
set sql=%sql% post_type = 'post' and
set sql=%sql% post_status = 'publish' and
set sql=%sql% comment_status = 'closed';
::
:: Protokolldatei ab zweiter Zeile einlesen und Tabelle updaten
::
for /F "skip=1" %%r in (%1) do (
  c:\"program files (x86)"\putty\plink -ssh -P 22 ^
    -l ssh-user -pw ssh-password ^
    hostname_oder_ip ^
    /usr/bin/mysql -u mysql-user -pmysql-password wordpress-database ^
    --execute=\"%sql%\"
    if %ERRORLEVEL% gtr 0 (
      set Nachricht=Fehler beim Update der Post-Kommentarfunktionen ^
      & goto batchend)
    echo.update ID %%r
)
:batchend
echo.%Nachricht%

Der Hinweis darf erlaubt sein, daß man derartige Manipulationen nur dann vornehmen sollte, wenn man die Folgen selbst richtig einschätzen kann.
rh2011-12-003