keironlowe/posty

此包已弃用,不再维护。未建议替代包。

面向对象的WordPress帖子类型管理器

1.1.0 2020-08-18 06:07 UTC

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处理设置所有标签以及一些合理的默认参数,但我们知道一种尺寸不适合所有人,因此你可以使用setLabelssetArguments方法更新这些。

Posty\Posty::make('Product', 'Products')
    ->setLabels()
    ->setArguments()
    ->register();

setLabelssetArguments都应接收一个数组,这可以是直接传递的,也可以是回调函数的结果。

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实例。此类具有addremovereorder方法。这些方法中的每一个都应该接收一个数组,这可以是直接传递的,也可以是回调函数的结果。

$products = Posty\Posty::make('Product', 'Products');
$columns  = $products->columns();

添加列

add方法应接收一个列的数组。每个列应该是一个键=>值的数组,其中包含两个必需的元素,即labelvalue

label是列的标签,而value应该是一个函数,该函数接受帖子的ID并返回正确的值。可选地,还有一个order元素,它应该是一个整数,允许你重新排序列。

字段的ID将自动从标签生成,但在你需要手动设置此值的情况下,可以使用id元素。

你可以通过将sort元素设置为alphanumeric来使列可排序。

$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(复选框)、titleauthordate列,你可以根据需要删除它们。

$columns->remove(['author', 'date']);

重新排序列

《reorder》方法应该接收一个按您希望顺序排列的列ID数组。默认情况下,自定义文章类型有《cb》(复选框)、《title》(标题)、《author》(作者)和《date》(日期)列,您在重新排列时应牢记。任何未包含在数组中的列将添加到末尾。

$columns->reorder(['cb', 'title', 'price', 'image']);