jazzman / custom-post-type

一个类,可以帮助您快速构建更高级的自定义文章类型。

安装次数: 1,201

依赖项: 0

建议者: 0

安全: 0

星标: 4

关注者: 3

分支: 1

开放问题: 2

类型:wordpress-muplugin

3.3.5 2023-08-02 11:55 UTC

README

Codacy Badge 一个类,可以帮助您快速构建更高级的自定义文章类型。

安装

composer require jazzman/custom-post-type

require_once ABSPATH.'vendor/autoload.php';

创建新的自定义文章类型

要创建文章类型,只需创建一个新的对象

use JazzMan\Post\CustomPostType;

$books = new CustomPostType('book');

可选的第二个参数是文章类型的参数。有关可用选项,请参阅WordPress 代码库

该类尽可能使用 WordPress 默认值。

要覆盖默认选项,只需将选项数组作为第二个参数传递。不一定需要传递所有选项,只需传递您想要添加/覆盖的选项即可,如下所示

$books = new CustomPostType('book', array(
	'supports' => array('title', 'editor', 'thumbnail', 'comments')
));

有关所有可用选项的详细信息,请参阅WordPress 代码库

现有文章类型

要处理现有文章类型,只需将文章类型名称传递给类构造函数

$blog = new CustomPostType('post');

添加分类法

您可以使用 register_taxonomy() 方法轻松添加分类法,如下所示

$books->registerTaxonomy('genres');

此方法接受两个参数,名称和选项。分类法名称是必需的,可以是字符串(分类法名称),或与文章类型相同的格式的名称数组

$books->registerTaxonomy('genres',array(
	'show_ui'       => true,
	'query_var'     => true,
	'rewrite'       => array( 'slug' => 'the_genre' )
));

同样,选项可以以数组的形式可选地传递。有关所有可能选项的详细信息,请参阅WordPress 代码库

现有分类法

您可以通过传递分类法名称通过 register_taxonomy 方法将现有分类法添加到文章类型。您只需要指定自定义分类法的选项 一次,在其首次注册时。

管理员编辑屏幕

过滤器

当您注册一个分类法时,它将 自动 添加到管理员编辑屏幕作为过滤器和一个列。

您可以使用 filters() 方法定义您想要显示的过滤器

$books->setFilters(array('genre'));

通过传递分类法名称数组,您可以选择显示的过滤器以及它们的顺序。如果您传递一个空数组,则管理员编辑屏幕上不会出现下拉过滤器。

该类提供了一些方法来帮助您修改管理员列。使用此类注册的分类法将自动添加到管理员编辑屏幕作为列。

您可以使用自己的自定义列添加任何您想要包含的值,例如,在我们的书籍文章类型中,我们将添加价格和评分的自定义字段。

您可以使用 setColumns() 方法通过传递一个数组来定义您希望在管理员编辑屏幕上显示的列,如下所示

$books->setColumns(array(
	'cb' => '<input type="checkbox" />',
	'title' => __('Title'),
	'genre' => __('Genres'),
	'price' => __('Price'),
	'rating' => __('Rating'),
	'date' => __('Date')
));

键定义了列的名称,值是该列显示的标签。以下列名称由类 自动 填充

  • 通过对象注册的任何分类法
  • cb 批量编辑的复选框
  • title 包含编辑链接的帖子标题
  • author 帖子作者
  • post_id 帖子的ID
  • icon 帖子的缩略图

填充列

您需要创建一个函数来填充那些不会 自动 填充的列。

您可以通过 setPopulateColumns() 方法来实现,如下所示

$books->setPopulateColumns('column_name', function($column, $post) {

	// your code goes here…

});

这样我们就可以像这样填充我们的价格列

$books->setPopulateColumns('price', function($column, $post) {

	echo "£" . get_post_meta($post->ID,'price',true);

});

该方法将向函数传递两个变量

  • $column - 列名称(不是标签)
  • $post - 当前帖子对象

这些被传递是为了帮助您正确地填充列。

菜单图标

Dashicons

随着WordPress 3.8的发布,出现了dashicons,这是一个可以用于自定义帖子类型的图标字体。要使用它,只需通过 setMenuIcon() 方法传递图标名称,如下所示

$books->setMenuIcon('dashicons-book-alt');

要查看图标列表和要使用的类名,请访问https://developer.wordpress.org/resource/dashicons/