WordPress คืออะไรและทำไมถึงเป็นที่นิยมมากที่สุด
WordPress เป็น Content Management System (CMS) แบบ Open Source ที่พัฒนาด้วย PHP และใช้ MySQL/MariaDB เป็นฐานข้อมูล เปิดตัวครั้งแรกในปี 2003 โดย Matt Mullenweg และ Mike Little ปัจจุบัน WordPress ครองส่วนแบ่งตลาด CMS มากกว่า 43% ของเว็บไซต์ทั้งหมดบนอินเทอร์เน็ต
WordPress มี 2 เวอร์ชันคือ WordPress.org ที่เป็น self-hosted สามารถดาวน์โหลดไปติดตั้งบน server ของตัวเองได้ฟรี ปรับแต่งได้ทุกอย่าง และ WordPress.com ที่เป็น hosted service ไม่ต้องจัดการ server เอง เหมาะสำหรับผู้เริ่มต้นที่ไม่มีความรู้ทางเทคนิค
เหตุผลที่ WordPress เป็นที่นิยมเพราะใช้งานง่ายไม่ต้องเขียน code ก็สร้างเว็บได้ มี Theme กว่า 10,000 ตัวและ Plugin กว่า 60,000 ตัวที่เพิ่มฟังก์ชันได้ทุกอย่าง มี community ขนาดใหญ่ที่ช่วยเหลือกัน รองรับ SEO ได้ดี และเว็บไซต์ใหญ่ๆหลายแห่งใช้ WordPress เช่น BBC America, TechCrunch, The New Yorker และ Sony Music
WordPress เหมาะสำหรับสร้างเว็บไซต์หลายประเภทเช่น Blog, Corporate Website, E-commerce (ผ่าน WooCommerce), Portfolio, Forum, Learning Management System (LMS) และ Membership Site
ติดตั้ง WordPress บน Server ด้วย Command Line
ติดตั้ง WordPress บน Ubuntu Server พร้อม LEMP Stack
# ติดตั้ง LEMP Stack (Linux, Nginx, MySQL, PHP)
sudo apt update && sudo apt upgrade -y
# ติดตั้ง Nginx
sudo apt install nginx -y
sudo systemctl enable nginx
# ติดตั้ง MySQL/MariaDB
sudo apt install mariadb-server -y
sudo mysql_secure_installation
# สร้าง Database สำหรับ WordPress
sudo mysql -u root -p << 'SQL'
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
SQL
# ติดตั้ง PHP 8.3
sudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd \
php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-xmlrpc \
php8.3-zip php8.3-imagick php8.3-redis -y
# ปรับแต่ง PHP
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 64M/' /etc/php/8.3/fpm/php.ini
sudo sed -i 's/post_max_size = 8M/post_max_size = 64M/' /etc/php/8.3/fpm/php.ini
sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.3/fpm/php.ini
sudo sed -i 's/max_execution_time = 30/max_execution_time = 300/' /etc/php/8.3/fpm/php.ini
sudo systemctl restart php8.3-fpm
# ดาวน์โหลดและติดตั้ง WordPress
cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar xzf latest.tar.gz
sudo chown -R www-data:www-data wordpress
sudo chmod -R 755 wordpress
# ตั้งค่า wp-config.php
cd wordpress
sudo cp wp-config-sample.php wp-config.php
sudo sed -i "s/database_name_here/wordpress/" wp-config.php
sudo sed -i "s/username_here/wpuser/" wp-config.php
sudo sed -i "s/password_here/StrongPassword123!/" wp-config.php
# เพิ่ม Salt Keys
curl -s https://api.wordpress.org/secret-key/1.1/salt/ | sudo tee -a wp-config.php
ตั้งค่า Nginx สำหรับ WordPress
# /etc/nginx/sites-available/wordpress
server {
listen 80;
server_name example.com www.example.com;
root /var/www/wordpress;
index index.php index.html;
# Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
# Gzip Compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 256;
# Static files caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|svg)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# WordPress Permalinks
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
}
# ซ่อนไฟล์สำคัญ
location ~ /\.ht { deny all; }
location = /wp-config.php { deny all; }
location ~* /wp-includes/.*\.php$ { deny all; }
location ~* /wp-content/uploads/.*\.php$ { deny all; }
# จำกัด xmlrpc.php (ป้องกัน brute force)
location = /xmlrpc.php { deny all; }
# Upload size
client_max_body_size 64M;
}
# เปิดใช้งาน site
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# ติดตั้ง SSL ด้วย Let's Encrypt
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
ตั้งค่า WordPress สำหรับ Production
ติดตั้ง WP-CLI สำหรับจัดการ WordPress ผ่าน command line
# ติดตั้ง WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# ตรวจสอบเวอร์ชัน
wp --info
# WP-CLI 2.10.0
# ติดตั้ง WordPress ผ่าน WP-CLI (แทนการใช้ web installer)
cd /var/www/wordpress
sudo -u www-data wp core install \
--url="https://example.com" \
--title="My Website" \
--admin_user="admin" \
--admin_password="SecureAdminPass!" \
--admin_email="admin@example.com"
# ตั้งค่าพื้นฐาน
sudo -u www-data wp option update blogdescription "คำอธิบายเว็บไซต์"
sudo -u www-data wp option update timezone_string "Asia/Bangkok"
sudo -u www-data wp option update date_format "j F Y"
sudo -u www-data wp option update permalink_structure "/%postname%/"
# ลบ content ตัวอย่าง
sudo -u www-data wp post delete 1 --force # Hello World
sudo -u www-data wp post delete 2 --force # Sample Page
sudo -u www-data wp comment delete 1 --force
# ติดตั้ง Plugin ที่จำเป็น
sudo -u www-data wp plugin install wordfence --activate # Security
sudo -u www-data wp plugin install wp-super-cache --activate # Caching
sudo -u www-data wp plugin install wordpress-seo --activate # Yoast SEO
sudo -u www-data wp plugin install updraftplus --activate # Backup
sudo -u www-data wp plugin install redis-cache --activate # Object Cache
# ติดตั้ง Theme
sudo -u www-data wp theme install flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavorsudo -u www-data wp theme install flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavorsudo -u www-data wp theme install flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavoraflavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavorageneration flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavorsudo -u www-data wp theme install flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavor flavorsudo -u www-data wp theme install flavor
sudo -u www-data wp theme install flavor astra --activate
sudo -u www-data wp theme delete twentytwentytwo twentytwentythree
# อัพเดททุกอย่าง
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all
# ตรวจสอบสถานะ
sudo -u www-data wp core version
sudo -u www-data wp plugin list
sudo -u www-data wp theme list
สร้าง Theme และ Plugin เบื้องต้น
สร้าง Child Theme สำหรับปรับแต่ง WordPress
# สร้าง Child Theme
mkdir -p /var/www/wordpress/wp-content/themes/astra-child
# style.css
cat > /var/www/wordpress/wp-content/themes/astra-child/style.css << 'CSS'
/*
Theme Name: Astra Child
Template: astra
Version: 1.0
Description: Custom child theme for Astra
*/
/* Custom CSS */
body {
font-family: 'Sarabun', sans-serif;
}
.site-header {
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.entry-content h2 {
color: #2c3e50;
border-bottom: 2px solid #3498db;
padding-bottom: 8px;
}
.entry-content pre {
background: #1e1e1e;
color: #d4d4d4;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
}
.entry-content code {
background: #f0f0f0;
padding: 2px 6px;
border-radius: 3px;
font-size: 0.9em;
}
CSS
# functions.php
cat > /var/www/wordpress/wp-content/themes/astra-child/functions.php << 'PHP'
401));
}
return $result;
});
// เพิ่ม excerpt length
function custom_excerpt_length($length) {
return 30;
}
add_filter('excerpt_length', 'custom_excerpt_length');
PHP
# เปิดใช้ child theme
cd /var/www/wordpress
sudo -u www-data wp theme activate astra-child
เพิ่มความเร็วและ Security ให้ WordPress
ตั้งค่า Redis Object Cache และ optimization สำหรับ WordPress
# ติดตั้ง Redis
sudo apt install redis-server -y
sudo systemctl enable redis-server
# ตั้งค่า Redis ใน wp-config.php
sudo -u www-data wp config set WP_REDIS_HOST '127.0.0.1'
sudo -u www-data wp config set WP_REDIS_PORT 6379 --raw
sudo -u www-data wp config set WP_REDIS_DATABASE 0 --raw
sudo -u www-data wp redis enable
# ตรวจสอบ Redis
redis-cli ping # PONG
redis-cli info keyspace
# db0:keys=150, expires=50
# Performance Optimization ใน wp-config.php
sudo -u www-data wp config set WP_MEMORY_LIMIT '256M'
sudo -u www-data wp config set WP_MAX_MEMORY_LIMIT '512M'
sudo -u www-data wp config set AUTOSAVE_INTERVAL 300 --raw
sudo -u www-data wp config set WP_POST_REVISIONS 5 --raw
sudo -u www-data wp config set EMPTY_TRASH_DAYS 7 --raw
# Security Settings
sudo -u www-data wp config set DISALLOW_FILE_EDIT true --raw
sudo -u www-data wp config set FORCE_SSL_ADMIN true --raw
sudo -u www-data wp config set WP_AUTO_UPDATE_CORE true --raw
# Cron Optimization — ใช้ system cron แทน wp-cron
sudo -u www-data wp config set DISABLE_WP_CRON true --raw
# เพิ่ม crontab
echo "*/15 * * * * www-data cd /var/www/wordpress && php wp-cron.php > /dev/null 2>&1" | sudo tee /etc/cron.d/wp-cron
# Database Optimization
sudo -u www-data wp db optimize
sudo -u www-data wp transient delete --all
sudo -u www-data wp cache flush
# ตรวจสอบ Performance
sudo -u www-data wp doctor check --all
Backup และ Migration ด้วย WP-CLI
สร้างระบบ backup อัตโนมัติสำหรับ WordPress
#!/bin/bash
# wp_backup.sh — WordPress Backup Script
set -euo pipefail
WP_PATH="/var/www/wordpress"
BACKUP_DIR="/opt/backups/wordpress"
DATE=$(date +%Y%m%d-%H%M%S)
RETENTION_DAYS=30
mkdir -p "$BACKUP_DIR"
echo "[$(date)] Starting WordPress backup..."
# 1. Database Backup
sudo -u www-data wp db export "$BACKUP_DIR/db-$DATE.sql" --path="$WP_PATH"
gzip "$BACKUP_DIR/db-$DATE.sql"
echo " Database: OK"
# 2. Files Backup (wp-content only)
tar czf "$BACKUP_DIR/files-$DATE.tar.gz" \
-C "$WP_PATH" wp-content/ wp-config.php
echo " Files: OK"
# 3. Plugin List (สำหรับ reinstall)
sudo -u www-data wp plugin list --path="$WP_PATH" --format=json \
> "$BACKUP_DIR/plugins-$DATE.json"
echo " Plugin list: OK"
# 4. Checksum
sha256sum "$BACKUP_DIR/db-$DATE.sql.gz" "$BACKUP_DIR/files-$DATE.tar.gz" \
> "$BACKUP_DIR/checksums-$DATE.txt"
# 5. Cleanup old backups
find "$BACKUP_DIR" -name "*.gz" -mtime +$RETENTION_DAYS -delete
find "$BACKUP_DIR" -name "*.json" -mtime +$RETENTION_DAYS -delete
find "$BACKUP_DIR" -name "*.txt" -mtime +$RETENTION_DAYS -delete
DB_SIZE=$(du -sh "$BACKUP_DIR/db-$DATE.sql.gz" | cut -f1)
FILES_SIZE=$(du -sh "$BACKUP_DIR/files-$DATE.tar.gz" | cut -f1)
echo "[$(date)] Backup complete: DB=$DB_SIZE, Files=$FILES_SIZE"
# Migration: ย้ายไปเซิร์ฟเวอร์ใหม่
# 1. Export database
# sudo -u www-data wp db export migration.sql --path=/var/www/wordpress
#
# 2. Copy ไปเซิร์ฟเวอร์ใหม่
# scp migration.sql user@new-server:/tmp/
# scp -r /var/www/wordpress/wp-content user@new-server:/var/www/wordpress/
#
# 3. Import database บนเซิร์ฟเวอร์ใหม่
# sudo -u www-data wp db import /tmp/migration.sql
#
# 4. เปลี่ยน URL
# sudo -u www-data wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables
#
# 5. Flush cache
# sudo -u www-data wp cache flush
# sudo -u www-data wp rewrite flush
FAQ คำถามที่พบบ่อย
Q: WordPress.org กับ WordPress.com ต่างกันอย่างไร?
A: WordPress.org เป็น software ฟรีที่ดาวน์โหลดไปติดตั้งบน server ของตัวเอง ปรับแต่งได้ 100% ติดตั้ง plugin/theme อะไรก็ได้ แต่ต้องจัดการ hosting เอง ส่วน WordPress.com เป็น hosted service ที่ดูแล server ให้ แต่จำกัดการปรับแต่งและ plugin ที่ใช้ได้ ต้องจ่ายค่าบริการรายเดือนสำหรับฟีเจอร์เพิ่มเติม
Q: WordPress ช้าต้องทำอย่างไร?
A: เริ่มจากติดตั้ง caching plugin เช่น WP Super Cache หรือ W3 Total Cache ใช้ Redis/Memcached สำหรับ object cache optimize รูปภาพด้วย WebP format ใช้ CDN เช่น Cloudflare ลด plugin ที่ไม่จำเป็นออก ใช้ PHP 8.3 ที่เร็วกว่า PHP 7 มาก และ optimize database ด้วย WP-CLI เป็นประจำ
Q: WordPress ปลอดภัยไหม?
A: WordPress core ปลอดภัยดีและได้รับ security update สม่ำเสมอ ปัญหาส่วนใหญ่มาจาก plugin/theme ที่ไม่ได้อัพเดท password ที่อ่อนแอ และ server ที่ตั้งค่าไม่ดี แนะนำให้อัพเดท WordPress plugin theme ทุกครั้ง ใช้ security plugin เช่น Wordfence ปิด xmlrpc.php เปลี่ยน login URL และใช้ 2FA
Q: Hosting ไหนดีสำหรับ WordPress?
A: สำหรับเว็บเล็ก shared hosting เช่น Hostinger SiteGround เพียงพอ สำหรับเว็บขนาดกลาง managed WordPress hosting เช่น Kinsta WP Engine Cloudways เหมาะกว่าเพราะ optimize มาสำหรับ WordPress โดยเฉพาะ สำหรับเว็บใหญ่ใช้ VPS หรือ dedicated server จาก DigitalOcean Vultr หรือ AWS
Q: WP-CLI คืออะไรและจำเป็นไหม?
A: WP-CLI เป็น command line tool สำหรับจัดการ WordPress โดยไม่ต้องเปิด browser ทำอะไรก็ได้ตั้งแต่ติดตั้ง อัพเดท จัดการ database สร้าง post/page ไปจนถึง search-replace URL สำหรับ developer และ sysadmin จำเป็นมากเพราะเร็วกว่า UI และ automate ได้ด้วย script
