Xiaopei's DokuWiki

These are the good times in your life,
so put on a smile and it'll be alright

User Tools

Site Tools


it:wordpress

WordPress

使用 php -S php 5.4 buildin 服务器

router.php
<?php
 
$root = $_SERVER['DOCUMENT_ROOT'];
chdir($root);
$path = '/'.ltrim(parse_url($_SERVER['REQUEST_URI'])['path'],'/');
set_include_path(get_include_path().':'.__DIR__);
if(file_exists($root.$path))
{
if(is_dir($root.$path) && substr($path,strlen($path) - 1, 1) !== '/')
$path = rtrim($path,'/').'/index.php';
if(strpos($path,'.php') === false) return false;
else {
chdir(dirname($root.$path));
require_once $root.$path;
}
}else include_once 'index.php';

可将此文件放到 WP 目录下,再 $ php -S localhost:9393 -t /path/to/wordpress router.php 运行

Run Wordpress Locally Using PHP's Built-In Web Server

develop

开发 theme / plugin 时, 应使用以下 plugins

  1. Debug Bar 查看 DB Query 及更多 debug 信息
  2. Debug Queries 只能查 DB Query, 样式不错
  3. ProssPress 的一些 plugin review:
    1. Theme-Check, 激活后, 可在 appearance 中找到 theme check 的功能

开发 theme

下图描述了访问某地址时会用到哪个模板文件:

WordPress template hierarchy

如果要新做一个 theme, 可考虑使用 framework, 如 Automattic/_s

开发 widget

wordpress(至少在 3.5 中)支持 2 种注册 widget 的方法:

  1. register_widget(), 适合管理员有自定义需要的 widget, 如“显示任意文本”, 文档: Widgets API « WordPress Codex
  2. wp_register_sidebar_widget(), 适合无自定义需要的 widget, 如“站点搜索”, 文档: Function Reference/wp register sidebar widget « WordPress Codex

自定义 page

模板中可通过自定义 page template 的方法自定义 page

  1. 在模板中新建 php 文件, 只要文件最前有 Template Name 的注释, 该文件就会被当做一个 page template(post 没有 template, post 的类型是 format)
    whatever_page.php
    <?php
    /*
    Template Name: Whatever
    */
    ?>
  2. 新建 page(设置 page template)
  3. 将 page 加到 menu 中

tips

Network 网络/多站点

将独立域名指向 network 中的一个子站点

用这个插件: WordPress › WordPress MU Domain Mapping « WordPress Plugins

  1. 修改好 domain 的 DNS 设置
  2. 修改好 domain 在 web 服务器的 VM 设置
  3. 按 管理网络 » 设置 » Domain Mapping 的说明, 修改服务器中 wp 的文件
  4. 在 管理网络 » 设置 » Domain Mapping 中输入服务器 IP
  5. 在站点的 工具 » Domain Mapping 中设置 domain
  6. 若需取消 mapping, 在 管理网络 » 设置 » Domains 中删除记录即可

隐藏 root 站点

在 root 站点使用以下 plugin:

my-redirect.php
<?php
/**
 * @package My_Redirect
 * @version 0.1
 */
/*
Plugin Name: My Redirect
Plugin URI: http://wordpress.stackexchange.com/questions/52298/hide-root-site