利于面向对象方式开发 WordPress 主题、插件的 PHP 公共代码包。
利于面向对象方式开发 WordPress 主题、插件的 PHP 公共代码包。
注册元框/分类法字段
1.一种元框一个类
use Impack\WP\Utils\Metabox;
class Custombox extends Metabox
{
function render($post)
{
echo '自定义内容';
}
function save($postid)
{
// 保存数据
}
}
2.在 add_meta_boxes 钩子执行
Custombox::add('boxid', '标题');
3.注册字段:创建有 addField/editField/saveField 方法的类后执行 add 方法
SeoField::add('category');
注册类型/分类法
1.类型配置文件 post.php 填注册参数
return [
'news' => [
// 'class' => News::class,
'name' => 'news',
'label' => '新闻',
'taxonomy' => ['tag'], //分类法配置的键名
'metabox' => [
//key=元框ID,val=类名和add方法的参数数组
'boxid' => [Custombox::class, '标题'],
],
],
];
2.分类法配置文件 taxonomy.php
return [
'tag' => [
'field' => [SeoField::class], //字段类名数组
],
];
3.init 钩子内执行
(new Impack\WP\Register\Registrar())->post();
4.配置项有 metabox/taxonomy/field 时,自动注册这些功能
5.配置项有 class 时,自动以单例形式绑定到容器,数组键用作绑定的 ID
异常处理规则
- 简单错误不终止程序运行
- 非调试模式下不输出任何简单错误
- 调试模式下显示所有错误和详细信息
- JSON 请求返回 JSON 格式的信息
使用自定义异常响应 AJAX 请求
1.定义异常消息
use Impack\Support\Enum;
class CustomEnum extends Enum
{
const ERROR = [0, '错误消息'];
}
2.定义异常类
class CustomException extends Exception{
use \Impack\WP\Exceptions\Render;
protected $enum = CustomEnum::class
}
3.抛出异常,参数支持 WP_Error、Enum
throw new CustomException('ERROR');
数据模型:Post/Comment/Term/User
使用时不需要 new 实例,调用静态方法 where
- where:返回单例,自动添加基础参数,支持传参
- limit/order/in/notin/search/meta/metas:添加查询参数
- param/merge:键值对添加参数/合并参数
- edit:编辑 add/update 常用的参数
- get:读取数据,参数默认为 null 返回自定义对象数组
- add:新增数据
- update:更新指定 ID 的数据
- delete:静态方法,删除数据
- Post 方法:parent/post/tax/taxs
- Term 方法:parent/noChild
- User 方法:user/role/hasPosts/adminStyle
- Comment 方法:parent/comment/status/post/author/subtree
- 新增术语时未提供 slug 会使用名称代替,中文将转成拼音
- setSingle:参数支持类名/init,自定义 get 返回的对象。
$post = \Impack\WP\Query\Post::where();
$term = \Impack\WP\Query\Term::where();
$user = \Impack\WP\Query\User::where();
$comment = \Impack\WP\Query\Comment::where();
// 查询文章
$post->limit(10)->get();
// 删除数据
$term::delete(1);
// 新增文章
$post->edit('标题', '内容')->add();
// 更新文章
$post->edit('修改标题')->update(1);
// 新增评论
$comment->edit('新评论')->add();
// 更新评论
$comment->edit('修改评论')->update(1);
// 新增术语
$term->edit('名称')->add();
// 更新术语
$term->parent(1)->update(2);
// 新增用户
$user->edit('login', 'pass', 'name')->add();
// 更新用户
$user->edit(null, null, '新名字')->update(1);
WordPress 内置的全局对象参考
- wp、wp_object_cache、wp_embed
- wpdb、wp_query、wp_rewrite
- wp_user、wp_roles、wp_widget_factory
- wp_locale、wp_locale_switcher
工作区目录建议
- src:所有类存放的目录
- config:配置信息。放置所有硬编码参数以便修改
- assets:js/css/fonts/images 等静态资源目录
- view:模板文件目录
