keironlowe / posty
面向对象的WordPress帖子类型管理器
Requires
- php: >=7.4
Requires (Dev)
- brain/monkey: ^2.4
- mockery/mockery: ^1.4
- phpstan/phpstan: ^0.12.35
- phpunit/phpunit: ^9
- szepeviktor/phpstan-wordpress: ^0.6.2
This package is auto-updated.
Last update: 2022-07-23 18:58:16 UTC
README
Posty是WordPress的一个面向对象的帖子类型管理器。它使得管理你的帖子类型和任何自定义列变得轻而易举。
路线图
- 帖子类型
- 列
- 可排序列
- 状态
- 标签/分类法
安装
Posty没有依赖关系,并且需要PHP >= 7.4。
composer require keironlowe/posty
使用
Posty提供了一个流畅的API来管理你的帖子类型和列。要开始,只需使用make
方法,提供单数和复数名称,以创建一个新的帖子类型。重要的是要注意,注册方法必须始终最后调用。在register
方法之后所做的任何更改都不会生效。
Posty\Posty::make('Product', 'Products')->register();
此帖子类型的slug/ID将根据单数名称自动生成,因此在这种情况下将是product
。可选地,你可以传递第三个参数来自定义它。
设置标签和参数
Posty处理设置所有标签以及一些合理的默认参数,但我们知道一种尺寸不适合所有人,因此你可以使用setLabels
和setArguments
方法更新这些。
Posty\Posty::make('Product', 'Products') ->setLabels() ->setArguments() ->register();
setLabels
和setArguments
都应接收一个数组,这可以是直接传递的,也可以是回调函数的结果。
Posty\Posty::make('Product', 'Products') ->setLabels([ // All labels ]) ->register();
Posty\Posty::make('Product', 'Products') ->setLabels(function ($labels) { $labels['menu_name'] = 'Overwrite value' return $labels; }) ->register();
列
要管理列,我们首先需要使用columns
方法获取ColumnRepository
实例。此类具有add
、remove
和reorder
方法。这些方法中的每一个都应该接收一个数组,这可以是直接传递的,也可以是回调函数的结果。
$products = Posty\Posty::make('Product', 'Products'); $columns = $products->columns();
添加列
add
方法应接收一个列的数组。每个列应该是一个键=>值的数组,其中包含两个必需的元素,即label
和value
label
是列的标签,而value
应该是一个函数,该函数接受帖子的ID并返回正确的值。可选地,还有一个order
元素,它应该是一个整数,允许你重新排序列。
字段的ID将自动从标签生成,但在你需要手动设置此值的情况下,可以使用id
元素。
你可以通过将sort
元素设置为alpha
或numeric
来使列可排序。
$columns->add([ [ 'label' => 'Price' 'value' => fn (int $post_id) => get_field('price', $post_id) 'order' => 2, 'sort' => 'numeric' ], [ 'label' => 'Image' 'value' => fn (int $post_id) => get_field('image', $post_id) 'order' => 3, 'id' => 'alternate_image', 'sort' => 'alpha' ] ]); $columns->add(function (array $existingColumns) { // Return column array });
删除列
remove
方法应接收一个要删除的列ID的数组。默认情况下,自定义帖子类型有cb
(复选框)、title
、author
和date
列,你可以根据需要删除它们。
$columns->remove(['author', 'date']);
重新排序列
《reorder》方法应该接收一个按您希望顺序排列的列ID数组。默认情况下,自定义文章类型有《cb》(复选框)、《title》(标题)、《author》(作者)和《date》(日期)列,您在重新排列时应牢记。任何未包含在数组中的列将添加到末尾。
$columns->reorder(['cb', 'title', 'price', 'image']);