
WordPress 开发指引
WP CLI
安装 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 CLI 安装完后,oh-my-zsh 用户可以激活相关插件plugins=(wp-cli git [...])
,获得命令行补全功能。
安装 WordPress
# download wordpress source code in working directory
wp core download --version 5.9
# generate config file
wp config create --dbname=wp_5.9 --dbuser=root --prompt=dbpass --dbhost=HOST
wp db create
wp core install --url=wp-5.9.x.local --title="wp-5.9.x" --admin_user=root --admin_password=root --admin_email=root@wp-5.9.x.local
升级 WordPress
wp core update --version=5.9.3
wp core update-db
# 完整升级
wp core update && wp plugin update --all && wp theme update --all && wp-cli core update-db --network && wp cli update
最小影响升级
wp core update --minor
wp-cli core update-db --network
wp plugin update --all --patch
wp theme update --all
主题
_s
全局替换主题名及文件夹名后生效。载入自定义 CSS 和 JS 如下:
function THEME_scripts() {
wp_enqueue_style( 'CSS_NAME', get_template_directory_uri() . '/css/css_name.css', array(), VERSION );
wp_enqueue_script( 'JS_NAME', get_template_directory_uri() . '/js/js_name.js', array(), VERSION, true );
}
add_action( 'wp_enqueue_scripts', 'THEME_scripts' );
bootscore
PhpStorm File Watch 配置
bootscore 自带 sass 支持,编译较慢时可配置 IDE 的 File Watch 功能,使 scss 文件更改时自动生成 css。开发机需要安装 sass 命令,数据库 options 表的 theme_mods_主题名 记录需要调整 css 生成时间戳至最大 bootscore_scss_modified_timestamp 为 9999999999。
brew install sass/sass/sass
<!-- 另存为 xml 文件可导入 PhpStorm -->
<TaskOptions>
<TaskOptions>
<option name="arguments" value="-I $ProjectFileDir$/wp-content/themes/bootscore/scss main.scss:../css/main.css" />
<option name="checkSyntaxErrors" value="true" />
<option name="description" />
<option name="exitCodeBehavior" value="ERROR" />
<option name="fileExtension" value="scss" />
<option name="immediateSync" value="true" />
<option name="name" value="SCSS" />
<option name="output" value="main.css:main.css.map" />
<option name="outputFilters">
<array />
</option>
<option name="outputFromStdout" value="false" />
<option name="program" value="sass" />
<option name="runOnExternalChanges" value="true" />
<option name="scopeName" value="Project Files" />
<option name="trackOnlyRoot" value="true" />
<option name="workingDir" value="$FileDir$" />
<envs />
</TaskOptions>
</TaskOptions>
常用信息
SQL
# 自定义菜单数据库详情
SELECT * FROM wp_posts WHERE post_type = 'nav_menu_item'
常用配置
MultiSite
在 wp-config.php 中配置:
/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
/* Tools > Network 安装后补充 */
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'moha.online' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
/* That's all, stop editing! Happy publishing. */
禁用 cron
define( 'DISABLE_WP_CRON', 1 );
nginx
# macOS OK
# Upstream to abstract backend connection(s) for php
upstream php {
# server unix:/tmp/php-cgi.socket;
server 127.0.0.1:9000;
# server unix:/usr/local/var/run/php82/php-fpm/www.sock;
}
server {
## Your website name goes here.
server_name wp-5.9.x.local;
listen 80;
## Your only path reference.
root WEB_ROOT;
## This should be in your http block and if it is, it's not needed here.
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
#The following parameter can be also included in fastcgi_params file
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}