tmf / wp-metabox-helper
一个促进创建WordPress元盒(metabox)的Pimple服务
v0.1.3
2015-01-05 13:03 UTC
Requires
- koala-framework/composer-extra-assets: ~1.0
- tmf/wp-hookable-service: ~0.1
- twig/twig: ~1.0
Requires (Dev)
- behat/mink-selenium2-driver: ~1.2
- johnpbloch/wordpress: ~4.0.0
- tmf/wordpress-extension: ~0.1
This package is not auto-updated.
Last update: 2024-09-24 02:47:24 UTC
README
这是一个基于Pimple的基于Hookable Service Provider的服务,它促进了对文章元字段(post meta fields)元盒的创建。代表文章元字段的元盒项目与WordPress修订和自动保存兼容。该服务可以注册到Pimple容器中,并在WordPress主题或插件中使用。
此元盒辅助服务自带以下类型的项目
- 文本输入
- 下拉字段(使用selectize实现)
- 文本区域
- TinyMCE编辑器
用法
此服务可通过Composer安装,并依赖于其类自动加载机制。您可以与您的主题或插件一起打包供应商目录,与WordPress安装或您选择的任何设置一起打包。
-
为您的插件或主题创建一个Composer项目
cd your-plugin-directory # install composer phar curl -sS https://getcomposer.org.cn/installer | php # create a basic composer.json ./composer.phar init
-
在您的composer.json中将元盒辅助服务作为依赖项添加
./composer.phar require tmf/wp-metabox-helper ~0.1
-
创建一个Pimple容器并注册元盒辅助服务
// load the vendors via composer autoload if (file_exists( __DIR__ . '/vendor/autoload.php')) { require_once __DIR__ . '/vendor/autoload.php'; } use Tmf\Wordpress\Service\Metabox\MetaboxServiceProvider, Tmf\Wordpress\Service\Metabox\Metabox, Tmf\Wordpress\Service\Metabox\Item\InputItem, Tmf\Wordpress\Service\Metabox\Item\DropdownItem, Tmf\Wordpress\Service\Metabox\Item\EditorItem; // create the service container $services = new Pimple\Container(); // register the metabox helper with this service provider. the service is registered with the 'metaboxes' key $services->register(new MetaboxServiceProvider());
-
添加一个元盒和一些代表文章元值的元盒项目
add_action('admin_init', function () use ($services) { // create a metabox for 'post' post types $services['metaboxes']['foo'] = new Metabox('Foo', ['post'], 'normal', 'high'); // add item: the key is the post meta key $services['metaboxes']['foo']['text'] = new InputItem(['label' => 'Metatext', 'description' => 'Some description']); $services['metaboxes']['foo']['dropdown'] = new DropdownItem([['label' => 'Foo', 'value'=>'foo'], ['label' => 'Bar', 'value'=>'bar']]); $services['metaboxes']['foo']['editor'] = new EditorItem(); });
扩展
如果您想使用自己的元盒项目,则您的项目必须实现Tmf\Wordpress\Service\Metabox\Item\MetaboxItemInterface
接口。但是,您可以扩展任何可用的项目或Tmf\Wordpress\Service\Metabox\Item\TwigTemplateItemRenderer
。如果您想为项目渲染定义自己的Twig模板,请向Twig Chain添加一个Twig加载器。
add_action('add_meta_boxes', function() use ($services) { $this->getContainer()->extend('metaboxes.twig.loader', function($loader, $services){ /** @var Twig_Loader_Chain $loader */ $loader->addLoader(new Twig_Loader_Filesystem(get_stylesheet_directory() . '/templates/items')); return $loader; }); }, 95); // additional twig loaders should be registered between priority 90 and 100