利于面向對象方式開發 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:模板文件目錄
