WordPress CMS & WP-CLI

WordPress

Installation entweder als Paket aus der Distribution oder per Download von Herunterladen – WordPress.org Deutsch WordPRess wird intensiv weiterentwickelt, der direkte Download liefert aktuellere Versionen als die Paketverwaltung der Distributionen.

WP-CLI

wp-cli erlaubt die WordPress Administration auf der Kommandozeile. Wichtig: das Skript muss mit den Rechten der WordPress Installation aufgerufen werden (nicht als root!). Typischerweise mit sudo und mit dem user www-data

sudo -u www-data wp help

Quelle: https://wp-cli.org/

Installation

  1. Download
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  1. Versionskontrolle
php wp-cli.phar --info
  1. Ausführbar machen
chmod +x wp-cli.phar
  1. verschieben, sodass es als system weites binary verfügbar ist
sudo mv wp-cli.phar /usr/local/bin/wp
  1. danach im jeweiligen WP root directory starten
sudo -u www-data wp
  1. Hilfe
sudo -u www-data wp help

Beispiele

Core Update einer WP Installation

sudo -u www-data wp core update

root@app6:/var/www/netzwissen.de# sudo -u www-data wp core update
PHP Warning:  Undefined array key "HTTP_X_FORWARDED_PROTO" in phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1277) : eval()'d code on line 120
Updating to version 6.3.1 (de_DE)...
Herunterladen der Aktualisierung von https://downloads.wordpress.org/release/de_DE/wordpress-6.3.1.zip ...
Entpacken der aktualisierten Version ...
Success: WordPress updated successfully.

User Management

wp user add-cap <user> <cap></font>     or: wp user add-role <user> <role>
  or: wp user application-password <command>
  or: wp user check-password <user> <user_pass> [--escape-chars]
  or: wp user create <user-login> <user-email> [--role=<role>] [--user_pass=<password>] [--user_registered=<yyyy-mm-dd-hh-ii-ss>] [--display_name=<name>]
[--user_nicename=<nice_name>] [--user_url=<url>] [--nickname=<nickname>] [--first_name=<first_name>] [--last_name=<last_name>] [--description=<description>
] [--rich_editing=<rich_editing>] [--send-email] [--porcelain]
  or: wp user delete <user>... [--network] [--reassign=<user-id>] [--yes]
  or: wp user generate [--count=<number>] [--role=<role>] [--format=<format>]
  or: wp user get <user> [--field=<field>] [--fields=<fields>] [--format=<format>]
  or: wp user import-csv <file> [--send-email] [--skip-update]
  or: wp user list [--role=<role>] [--<field>=<value>] [--network] [--field=<field>] [--fields=<fields>] [--format=<format>]
  or: wp user list-caps <user> [--format=<format>]
  or: wp user meta <command>
  or: wp user remove-cap <user> <cap>
  or: wp user remove-role <user> [<role>]
  or: wp user reset-password <user>... [--skip-email] [--show-password] [--porcelain]
  or: wp user session <command>
  or: wp user set-role <user> [<role>]

</file>

Password reset

 sudo -u www-data wp user reset-password admin --show-password

Alle Themes auflisten

sudo -u www-data wp theme list
|+------------------+----------+--------+---------+ 
| Divi             | active   | none   | 4.27.4  | 
| twentytwentyfive | inactive | none   | 1.3     | 
| twentytwentyfour | inactive | none   | 1.3    |
| +------------------+----------+--------+---------+ 

Alle Plugins auflisten

root@www1:/var/www/netzwissen.de# sudo -u www-data wp plugin list
+-----------------------------------+----------+--------+----------+
| name | status | update | version |
+-----------------------------------+----------+--------+----------+
| activitypub | active | none | 7.2.0 |
| wp-piwik | active | none | 1.0.30 |
| divi-essential | active | none | 4.7.1 |
| divi-event-calendar-module | inactive | none | 2.8.25 |
| local-google-fonts | active | none | 0.24.0 |
| daggerhart-openid-connect-generic | active | none | 3.10.0 |
| post-smtp | active | none | 3.4.1 |
| real-cookie-banner-pro | active | none | 5.2.0 |
| redis-cache | active | none | 2.6.5 |
| share-on-mastodon | active | none | 0.19.3 |
| svg-support | active | none | 2.5.14 |
| the-events-calendar | active | none | 6.15.0.1 |
| two-factor | active | none | 0.14.0 |
| webfinger | active | none | 3.2.7 |
| wp-discourse | active | none | 2.5.9 |
| wpforms | active | none | 1.9.7.3 |
| wordpress-seo | active | none | 25.8 |
| wordpress-seo-premium | active | none | 25.8 |
| object-cache.php | dropin | none | |
+-----------------------------------+----------+--------+----------+

Maintenance mode

root@www1:/var/www/netzwissen.de# sudo -u www-data wp maintenance-mode 
usage: 
wp maintenance-mode activate [--force]    or: 
wp maintenance-mode deactivate            or: 
wp maintenance-mode is-active             or: 
wp maintenance-mode status  

See 'wp help maintenance-mode <command>' for more information on a specific command. 

WordPress hinter einem Reverse Proxy

Für den Einsatz im Rechenzentrum wird typischerweise ein Load Balancer/Reverse Proxy benutzt, der die zentrale Umsetzung der ssl Verschlüsselung übernimmt. Vorteil: man kann mehrere Webdienste unter derselben IP Adresse betreiben, denn öffentliche IP IPv4 Adressen sind knapp und teuer.

wp-config.php Beispiel für den Einsatz mit Haproxy Funktioniert in ähnlicher Weise auch mit anderen Webservern/Reverse Proxies wie nginx, traefik, caddy usw.

/** needed because we are behind haproxy  */
/* test if the https header is present coming from proxy 
/* and add proper ssl setting for WP environment
/* https://wordpress.stackexchange.com/questions/387990/how-do-i-handle-ssl-properly-when-wp-is-behind-a-reverse-proxy
*/
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

/* if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'); */
$_SERVER['HTTPS']='on';
$_SERVER['SERVER_PORT']='80';

if (strpos($_SERVER['X_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
}

/* Das war’s, Schluss mit dem Bearbeiten! Viel Spaß. */
/* That's all, stop editing! Happy publishing. */

/** Der absolute Pfad zum WordPress-Verzeichnis. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}

/** Definiert WordPress-Variablen und fügt Dateien ein.  */
require_once( ABSPATH . 'wp-settings.php' );

/** raise memory limit */
define( 'WP_MEMORY_LIMIT', '128M' );

/** disable wp-cron */
define('DISABLE_WP_CRON', 'true');

/** update method */
define('FS_METHOD','direct');