Impack WordPress - 面向对象方式开发WordPress主题

利于面向对象方式开发 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:模板文件目录

下载权限

查看
  • 免费下载
    评论后下载
    登录后下载

  • {{attr.name}}:
您当前的等级为
您有每天免费下载所有资源次的特权,今日剩余 已取得下载权限
资源

JAVClub - 集搜集、下载、存储、观看、管理一体的CMS

2020-9-21 9:37:11

资源

mui - 最接近原生APP体验的高性能前端框架

2020-9-24 0:22:49

⚠️
Npcink上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 link@baimu.org 或点击右侧 私信:Muze 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索