与作曲家安装:
composer require felipelavinz/queulat:dev-master
作曲家将安装在wp-content/mu-plugins/queulat
如果您需要在其他文件夹上安装,则应将类似的内容添加到项目的Composer.json:
{
"extra" : {
"installer-paths" : {
"htdocs/wp-content/mu-plugins/{$name}" : [ " type:wordpress-muplugin " ]
}
}
}其中htdocs/wp-content/mu-plugins/{$name}这是通往您的Mu-Plugins目录的路径。 Queulat将在指定文件夹上安装为子文件夹。
Queulat使用Composer AutoLoader来延迟其大部分代码,因此您需要确保在初始化Queulat之前包括自动加载器。
另外,由于在子文件夹上安装的Mu-Plugins不会由WordPress自动加载,因此您必须手动需要主文件。
您可以在Mu-Plugins文件夹上使用一个文件解决此问题,例如:
<?php
/**
* Plugin Name: Queulat Loader
* Description: Load Queulat mu-plugin
*/
// Load Composer autoloader (ABSPATH it's the path to wp-load.php).
require_once ABSPATH . ' /../vendor/autoload.php ' ;
// Load Queulat main file.
require_once __DIR__ . ' /queulat/queulat.php ' ;插件标头是可选的,但建议使用。
您还可以使用基岩的自动加载器之类的东西,该装置将加载所有安装在子折叠器上的MU-Plugins(您可以将该文件复制在Mu-Plugin文件夹上,并且可以自动加载queulat)。
它的目的是改善我们为WordPress创建事物的方式,因此,它并没有从根本上转换它,而是尝试使用熟悉的概念来为其构建更好的结构化事物,使用自定义的帖子类型,自定义邮政查询和自定义帖子对象。
您可以使用自己的自定义邮政插件生成器生成这些生成,该生成器可用于“工具”菜单上的管理用户。
每个自定义帖子类型插件都由:
Song_Post_Type帖子类型定义。此类定义了用于在WordPress上注册帖子类型的标签和其他参数。默认情况下,插件激活将为管理员添加所需的许可并重写齐平。如果您需要定义自定义挂钩以获得邮政类型的额外功能,则可以扩展此类。Song_Post_Query 。您可以使用此类来创建新的数据库查询,并使用您可能需要为此类型的内容定义的任何默认参数,并使用简单的foreach而不是经典的WordPress循环遍历结果。Song_Post_Object ,使用自定义查询时将在foreach循环中返回。这样,您可以在此类中添加任何自定义方法,这些方法将在foreach循环中可用。使用Queulat,您可以做类似的事情:
$ tracklist = new Song_Post_Query ( array (
' tax_query ' => array (
array (
' taxonomy ' => ' albums ' ,
' term ' => ' dark-side-of-the-moon ' ,
' field ' => ' slug '
)
)
) );
foreach ( $ tracklist as $ track ) {
echo $ track -> title ();
echo $ track -> duration ();
echo $ track -> lyrics ();
}@todo
@todo
@todo
目前,定义元对象上的元数据的主要方法是创建元框。扩展随附的QueulatMetabox摘要类。
扩展类必须实现抽象方法: get_fields( ) : array and sanitize_data( array $data ) : array ;例如:
<?php
use Queulat Metabox ;
use Queulat Forms Node_Factory ;
use Queulat Forms Element Input_Text ;
class Track_Meta_Box extends Metabox {
/**
* Must return the list of form fields to be included on this meta box
*
* @return QueulatFormsNode_Interface[] Array of form fields.
**/
public function get_fields () : array {
return array (
Node_Factory:: make (
Input_Text::class,
array (
' name ' => ' length ' ,
' label ' => ' Track length ' ,
' attributes.class ' => ' regular-text ' ,
' properties.description ' => _x ( ' Track duration, such as: 01:23:45 (1 hour, 23 minutes, 45 seconds) ' , ' length field description ' , ' track_cpt ' ),
)
),
Node_Factory:: class (
Input_Checkbox::class,
array (
' name ' => ' colour ' ,
' label ' => ' Colour ' ,
' options ' => array (
' red ' => ' Red ' ,
' green ' => ' Green ' ,
' blue ' => ' Blue ' ,
' any ' => ' Any colour '
)
)
)
);
}
/**
* Sanitize data from the metabox form.
*
* @param array $data Form data from the meta box (not the full $_POST).
* @return array Sanitized data.
**/
public function sanitize_data ( array $ data ) : array {
return queulat_sanitizer ( $ data , array (
' length ' => array ( ' sanitize_text ' ),
' colour.* ' => array ( ' sanitize_key ' )
) );
}
}Queulat会考虑更新提交的数据作为元元字段,并在Meta框表单上加载保存值。
为了消毒数据,您可以使用任何喜欢的方法。引用的queulat_sanitizer()函数这是一种将回调应用于$data输入的匹配值的非常简单的方法。您可以使用*匹配所有属性(使用点表示法)。
检查(使用Queulat表单)[#使用-Quelat-Forms]的部分,以获取有关可用表单字段或如何创建自己的表单的更多信息。
@todo: add general description
@todo: add description for each form field
@todo
@todo
Node_Factory这是一个简单的工厂类,能够创建任何形式的表单元素。
它揭示了一个可以实例化和配置元素的单个make方法。此方法采用两个参数:
默认情况下,Queulat配置为处理以下属性:
Node_Factory作为数组创建。元素不支持的争论被跳过。
您可以使用Node_Factory::register_argument()扩展支持的参数。
<?php
use Queulat Forms Element Div ;
use Queulat Forms Node_Factory ;
use Queulat Forms Element Button ;
$ submit = Node_Factory:: make (
Div::class, array (
' attributes ' => array (
' class ' => ' col-md-4 col-md-offset-8 ' ,
' id ' => ' form-buttons '
),
' text_content ' => ' * required field ' ,
' children ' => array (
Node_Factory:: make (
Button::class,
' attributes ' => array (
' class ' => ' btn-lg ' ,
' type ' => ' submit '
),
' text_content ' => ' Submit '
)
)
);
);
echo $ submit ;您可以使用register_argument方法注册NODE_FACTORY使用的新参数。
此方法采用Node_Factory_Argument_Handler ,它需要:
$argument (字符串),是您将要处理的参数键的名称。$method (字符串),它是将接收工厂方法上使用的参数的方法的名称。$call_type (字符串),该$ call_type(字符串)确定$方法将如何处理接收的配置值。 $call_type可以是:
Node_Factory::CALL_TYPE_VALUE :将所有参数作为单个数组传递给处理程序。这是默认设置。示例: $obj->$method( $args );
Node_Factory::CALL_ARRAY :将参数作为单个参数传递给处理程序。示例: call_user_func_array( [ $obj, $method ], $args );
Node_Factory::CALL_KEY_VALUE :对于参数中的每个项目,将其键和值作为参数传递给处理程序。例子:
foreach ( $ args as $ key => $ val ) {
$ obj -> $ method ( $ key , $ val );
} Node_Factory::CALL_TYPE_VALUE_ITEMS :对于参数中的每个项目,将值用作处理程序的参数。示例: array_walk( $args, [ $obj, $method ] );
| 相关接口 | 相关特征 |
|---|---|
Component_Interface | Node_Trait |
Element_Interface | Childless_Node_Trait |
节点是应与表格一起使用的最低对象级别
使用Node_Trait帮助实现此接口或Childless_Node_Trait 。总体而言,元素应使用前者和后者的组成部分。
扩展node_interface和attributes_interface。
扩展node_interface和attributes_interface。另外,添加get_tag_name方法。
扩展element_interface和properties_interface。
扩展html_element_interface和form_node_interface。
“属性”是实现此接口的对象使用的特殊属性。它们呈现为HTML属性key="val"
使用Attributes_Trait帮助实现此接口。
实现此接口(元素或组件)的对象用作表单对象。他们有一个“名称”,用于将数据发送到服务器,“值”和“标签”。
Form_Control_Trait可以帮助实现此接口中的“标签”和“名称”获取器和设定器。 “值” getter和设置器应由您自己的自定义组件定义。
扩展ArrayAccess,可访问的材料,可数,可序列化。
最常用的是从节点中获取类似阵列的孩子。
由控件,收音机,选择和每个组件等控件使用的每个组件都使用,其中提供了几种可以选择的替代方案。
使用Options_Trait帮助实现此接口。
节点属性(不要与常规对象属性混淆)可以存储任意数据,例如查看设置,错误数据或验证状态。
使用Properties_Trait帮助实现此接口。
基本界面将通过表单视图使用。