WordPress

wp-cli 安裝與使用

https://wp-cli.org/

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

使用

/usr/local/bin/wp --allow-root

範例

#!/bin/sh
# all web directories
target_path="/var/www/j7.lb168.tw"
## 安全緣故,改用 mysql_config_editor
#allow_root="--allow-root"

cron="cron event run --due-now"

# date format for backup file (dd-mm-yyyy)
date="$(date +"%Y.%m.%d-%H-%M")"

# mysql, mysqldump and some other bin's path
WP="/usr/local/bin/wp --allow-root"
CHOWN="$(which chown)"
OWNER="www-data"

cd $target_path
$WP $cron
$CHOWN -R $OWNER:$OWNER $target_path

exit 0;

WordPress 修改 wp-config.php 各項變數

內容修訂版本上限次數

# 控制內容修訂版本上限次數
define( 'WP_POST_REVISIONS', 4 );

# 取消內容修訂版本次數
define('WP_POST_REVISIONS', false );

定義使用的記憶體

# WordPress 前台可使用的記憶體
define( 'WP_MEMORY_LIMIT', '256' );

# wp-admin 後台可使用記憶體 
define( 'WP_MAX_MEMORY_LIMIT', '512' );

定義快取 – WP Super Cache

# 定義快取
define( 'WP_CACHE', true ) ;

# 快取資料夾
define( 'WPCACHEHOME', '/var/www/j7.lb168.tw/wp-content/plugins/wp-super-cache/' );

設定 cookie domain

define( 'COOKIE_DOMAIN', 'j7.lb168.tw');

設定多重 Redis key

單一主機跑 Redis 的時候,會亂七八糟,所以要設定 Redis Key

define( 'WP_CACHE_KEY_SALT', 'j7.lb168.tw' );

其他 Redis Object Cache 相關參數:

define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_DATABASE', 1 );
define( 'WP_REDIS_PASSWORD', 'mypassword_mypassword_mypassword_mypas' );

禁止登入者修改檔案

define( 'DISALLOW_FILE_EDIT', true );

清空回收桶(7 天)

define( 'EMPTY_TRASH_DAYS', '7' );

WordPress 除錯工具

# 開啟 PHP 除錯工具
define( 'WP_DEBUG', true );

# 開啟 CSS 和 JavaScript 除錯工具
define( 'SCRIPT_DEBUG', true );

優化 WordPress 的 MySQL DB(用完記得馬上關閉)- 不建議使用

define( 'WP_ALLOW_REPAIR', true );

其他設定

define('CONCATENATE_SCRIPTS', true );
define('COMPRESS_SCRIPTS', true);
define('COMPRESS_CSS', true);

PHP Dependency of phpMyadmin & WordPress

前置作業 – Nginx & PHP & MySQL

關於 MySQL 8 的安裝請參考這篇 – Ubuntu 安裝 MySQL 8.0 (mysql-community-server)

nginx 跟 php 是用 Ondřej Surý 打包好的。

sudo add-apt-repository -n ppa:ondrej/php && sudo add-apt-repository -y ppa:ondrej/nginx-mainline

MySQL 的部份看要使用 MySQLMariaDB 或是 PERCONA 都可以。

PHP7.4

sudo apt install dbconfig-common dbconfig-mysql javascript-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libcurl4 libflac8 libjs-cropper libjs-jquery libjs-sphinxdoc libjs-underscore liblua5.2-0 libnghttp2-14 libpcre2-8-0 libphp-phpmailer libpsl5 librtmp1 libsodium23 libzip4 php php-bz2 php-common php-curl php-gd php-getid3 php-mbstring php-mysql php-pear php-phpseclib php-tcpdf php-xml php-zip php7.4 php7.4-bz2 php7.4-cli php7.4-common php7.4-curl php7.4-fpm php7.4-gd php7.4-fpm php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-zip publicsuffix vorbis-tools

PHP8.0(把上面 7.4 都換成 8.0,沒有的直接去掉 7.4)

sudo apt install php-getid3 php8.0 php8.0-bz2 php8.0-cli php8.0-common php8.0-curl php8.0-fpm php8.0-gd php8.0-fpm php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-readline php8.0-xml php8.0-zip

phpMyAdmin 前製作業

sudo mysql_secure_installation

跑完之後,設定 phpmyadmin 帳號權限

sudo mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

設定 nginx

安裝 WordPress

WPForms – 讓其他角色的使用者可以創建編輯

Contact Form by WPForms – Drag & Drop Form Builder for WordPress

Contact Form by WPForms – Drag & Drop Form Builder for WordPress 是常用的聯絡表單。但是只有網站管理員才能新增或是修改。

開啟讓 Editor 以上的角色可以編輯、新增 WPForm

先安裝外掛 – Code Snippets

新增 WPForm 使用權限

程式碼如下:

/**
 * Change WPForms capability requirement.
 *
 * @param string $cap
 * @return string
 */
function wpforms_custom_capability( $cap ) {
 
    // unfiltered_html by default means Editors and up.
    // See more about WordPress roles and capabilities
    // https://codex.wordpress.org/Roles_and_Capabilities
    return 'unfiltered_html';
}
add_filter( 'wpforms_manage_cap', 'wpforms_custom_capability' );

測試囉~~~

可以使用非 Administrator 的使用者測試 WPForm 囉