Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jhorlima/wp-mocabonita
Framework para desenvolvimento de plugins wordpress
https://github.com/jhorlima/wp-mocabonita
composer framework mvc php plugin wordpress-development
Last synced: 28 days ago
JSON representation
Framework para desenvolvimento de plugins wordpress
- Host: GitHub
- URL: https://github.com/jhorlima/wp-mocabonita
- Owner: jhorlima
- License: gpl-3.0
- Created: 2017-02-01T17:54:13.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-28T20:01:49.000Z (over 6 years ago)
- Last Synced: 2024-09-27T14:41:58.988Z (about 1 month ago)
- Topics: composer, framework, mvc, php, plugin, wordpress-development
- Language: PHP
- Size: 2.22 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
#MocaBonita - Wordpress
O MocaBonita é um framework desenvolvido para auxiliar na criação de plugins wordpress.Vantagens:
- Padrão MVC
- Composer
- Validações
- ORM
- Orientação a Objeto
- Templates e Views
- Eventos
- Seus recusos são carregados por completo apenas quando necessário
- Não interfere o ciclo de vida do wordpress, desde que não exista um evento para isto
- Fácilidade aprendizado```
Antes de começar, é recomendado que você faça uma leitura desse artigo:
https://codex.wordpress.org/pt-br:Escrevendo_um_Plugin#Nomes.2C_arquivos_e_Locais
```[Aplicação de Exemplo](https://github.com/jhorlima/agenda-contatos)
[Documentação PHP](https://jhorlima.github.io/wp-mocabonita/)
[1º Criando o plugin](#1º-criando-o-plugin)
[2º Importar o MocaBonita](#2º-importar-o-mocabonita)
[3º Configurar o plugin](#3º-configurar-o-plugin)
[4º Configuração das Páginas](#4º-configuração-das-páginas)
####1º Criando o plugin ####
Acesse a pasta `wp-content/plugins` dentro da pasta onde o **wordpress** está instalado, depois crie uma nova pasta com o nome do seu plugin, Ex: `exemplo-plugin`.####2º Importar o MocaBonita ####
Em primeiro lugar é necessário ter o composer instalado no computador.Depois de instalado, execute o código abaixo pelo terminal na pasta do seu plugin.
```sh
$ composer require jhorlima/wp-mocabonita --update-no-dev
```####3º Configurar o plugin ####
Depois da instalação do MocaBonita e suas dependencias do composer, crie um arquivo chamado `index.php` dentro da pasta do plugin e depois adicione o seguinte código nele:```php
addPsr4(__NAMESPACE__ . '\\', $pluginPath);/**
* Callback que será chamado ao ativar o plugin (Opicional)
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html#method_active
*/
MocaBonita::active(function (MocaBonita $mocabonita){
//
});/**
* Callback que será chamado ao desativar o plugin (Opicional)
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html#method_deactive
*/
MocaBonita::deactive(function (MocaBonita $mocabonita){
//
});/**
* Callback que terão as configurações do plugin
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html#method_plugin
*/
MocaBonita::plugin(function (MocaBonita $mocabonita){
/**
* Criando uma página para o Plugin
*/
$paginaExemplo = MbPage::create('Exemplo');
/**
* Aqui podemos configurar alguns ajustes da página
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbPage.html
*/
$paginaExemplo->setMenuPosition(1)
->setDashicon('dashicons-admin-site')
->setRemovePageSubmenu();
/**
* Criando outra página para o Plugin
* É possível inúmeras páginas ao plugin
*/
$paginaOutra = MbPage::create('Outra');
/**
* Para que cada página funcione corretamente, é necessário criar uma Class que extenda de MbController
* e depois adiciona-la à página, através de seu nome.
* @doc: http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class
*/
$paginaOutra->setController(ExemploController::class);
/**
* Cada método da controller pode ser representado por uma action na página,
* entretanto o método na Controller deve ter o sufixo "Action", Ex: cadastrarAction(MbRequest $mbRequest, MbResponse $mbResponse).
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbAction.html
*/
$paginaOutra->addMbAction('cadastrar', function (MbRequest $mbRequest){
try{
return ModelExemplo::create($mbRequest->inputSource());
} catch (\Exception $e){
throw new \Exception("Não foi possível realizar o cadastro", 400, $e);
}
});
/**
* Por padrão, ao ser criado uma página, uma action chamada index é criada, contudo é possível ajustar
* suas configurações, assim como de qualquer outra action.
* Assim como as páginas, as actions tem suas próprias configurações.
*/
$paginaOutra->getMbAction('index')
->setRequiresAjax(true)
->setRequiresMethod('GET')
->setRequiresLogin(false);
$paginaOutra->addMbAction('apagar')
->setRequiresMethod('DELETE')
->setRequiredParam('id');
$paginaOutra->addMbAction('atualizar')
->setRequiresMethod('PUT')
->setRequiredParams(['id', 'usuario_id']);
/**
* Cada página pode ter suas capacidades alteradas, contudo elas só terão efeitos se for necessário o login do Wordpress
* @doc: https://codex.wordpress.org/Roles_and_Capabilities#Capability_vs._Role_Table
*/
$paginaOutra->setCapability('read');
/**
* Caso seu plugin precise de um shortcode, você pdoe adiciona-lo associando à página.
* Seu comportamento é semelhante a de uma action, contudo seu sufixo deve ser "Shortcode", Ex: exemploShortcode(array $attributes, $content, $tags).
* @doc: https://codex.wordpress.org/Shortcode_API
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html#method_addMbShortcode
*/
$mocabonita->addMbShortcode('exemplo_shortcode', $paginaOutra, 'exemplo');
/**
* Vamos criar uma terceira página que será uma subpágina da página Outra
*/
$paginaTeste = MbPage::create('Teste');
/**
* É possível tornar uma página como subpágina de outra.
* A única diferença entre uma página e uma subpágina é que no menu administrativo, a subpágina passa a ser um submenu
* da página principal. Além disso, ao adicionar uma subpágina, você não precisa adiciona-la ao MocaBonita,
* como vamos fazer nas próximas linhas com as outras duas páginas.
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbPage.html#method_setSubPage
*/
$paginaOutra->setSubPage($paginaTeste);
/**
* Após finalizar todas as configurações da página, podemos adiciona-las ao MocaBonita para que elas possam ser
* usadas pelo Wordpress. Caso uma página não seja adicionada, apenas os shortcodes relacionados a ela serão
* executados.
*/
$mocabonita->addMbPage($paginaExemplo);
$mocabonita->addMbPage($paginaOutra);
/**
* É possível também definir assets ao plugin, wordpress ou página, basta obter seu MbAsset.
* Nos assets é possível adicionar css e javascript ao Wordpress.
* A class MbPath também pode ser utilizada para auxiliar nos diretórios do wordpress.
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbAsset.html
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbPath.html
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html#method_getAssetsPlugin
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html#method_getAssetsWordpress
* @doc: https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbPage.html#method_getMbAsset
*/
$mocabonita->getAssetsPlugin()
->setCss(MbPath::pBwDir('bootstrap/dist/css/bootstrap.min.css'))
->setCss(MbPath::pCssDir('app.css'));
}, true);
//O ultimo parâmetro de MocaBonita::plugin é opcional e define se o plugin está em desenvolvimento.
```Lembre-se de editar as anotações do começo da página para o reconhecimento do plugin.
Recomendamos que o namespace do plugin seja semelhante ao nome da pasta em **`UpperCamelCase`**.Recomendamos que sua estrutura interna das páginas sejam assim:
`controller` : Nesta pasta ficarão as controllers do plugin.
`model` : Nesta pasta ficarão as models do plugin.
`view` : Nesta pasta ficarão as views e templates do plugin.
`event` : Nesta pasta ficarão os eventos do plugin.
`public` : Nesta pasta ficarão os arquivos de images, css e javascript do plugin.
Crie também as pastas `images`, `css` e `js` dentro da pasta `public`, elas poderão ser obtidas através do MbPath
*Lembre-se que nas pastas `controller`, `model` e `service` você precisará definir os namespaces nas classes php.
Documentação de configuração:
https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.MocaBonita.html####4º Páginas ####
As páginas do framework MocaBonita são responsáveis por transmitir informações do plugin. Elas podem ser acessadas pelo
menu administrativo do Wordpress, por padrão, ou pelo parametro "**page**" da URL informando seu _slug_ como valor. Ex: ?page=exemplo.Por padrão, uma página vem configurada como:
```php
setName("Exemplo");
$paginaExemplo->setSlug("exemplo");
$paginaExemplo->setCapability("manage_options");
$paginaExemplo->setDashicon("dashicons-editor-code");
$paginaExemplo->setHideMenu(false);
$paginaExemplo->setMbAsset(new MbAsset());
$paginaExemplo->setMainMenu(true);
$paginaExemplo->setSubMenu(false);
$paginaExemplo->setMenuPosition(1);
$paginaExemplo->addMbAction('index');```
É possivel adicionar inúmeras páginas em um plugin, contudo elas precisam ser criadas dentro das configurações de um
plugin ou dentro de um evento do MocaBonita que inicializa após o Wordpress, chamado START_WORDPRESS.*Lembre-se: Todas as páginas precisam ser adicionadas ao MocaBonita após sua configuração.
```php
addMbPage($paginaExemplo);
```É possível também que uma página tenha outras subpáginas. A única diferença entre uma página e uma subpágina é que no
menu administrativo, pois subpágina passa a ser um submenu da página principal. Além disso, ao adicionar uma subpágina,
você não precisa adiciona-la ao MocaBonita, pois passa ser responsabilidade da página este processo.
Uma subpágina pode ser criada igual uma página principal e depois ser adicionada como uma subpágina, ex:
```php
setSubPage($paginaTeste);
```Ou diretamente na página existente, informando apenas o nome e o slug da nova subpágina.
```php
addSubPage('Teste', 'teste');```
Veja a documentação completa da classe de Páginas do MocaBonita para saber o que mais você pode fazer:
https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbPage.html
####5º Ações ####
As ações do MocaBonita são os compotarmentos das páginas. Cada atividade que o sistema precisa realizar será
feita através de uma ação. Uma página pode ter inúmeras ações, e por padrão, ela já vem com a ação "index".Exemplo de como adicionar uma ação:
```php
addMbAction("index");
```
Por padrão, uma ação já vem configurada com:```php
addMbAction("buscar-todos");/**
* Configuração padrão ao criar uma action
*/
$indexAction->setMbPage($paginaTeste);
$indexAction->setName("buscar-todos");
$indexAction->setFunctionName("buscarTodos");
$indexAction->setRequiresLogin(true);
$indexAction->setRequiresAjax(false);
$indexAction->setRequiresMethod(null);
$indexAction->setFunctionComplement('Action');
$indexAction->setShortcode(false);
$indexAction->setCapability(null);/**
* Outros Exemplos
*/$paginaTeste->addMbAction("create")
->setCallback(function (MbRequest $mbRequest){
return Exemplo::create($mbRequest->inputSource());
});$paginaTeste->addMbAction("update", function (MbRequest $mbRequest){
return Exemplo::updateOrCreate(['id' => $mbRequest->query('id')], $mbRequest->inputSource());
})->setRequiredParam('id');$paginaTeste->addMbAction("all")->setData(Exemplo::all());
```
Mais informações em : https://jhorlima.github.io/wp-mocabonita/classes/MocaBonita.tools.MbAction.html
As ações são chamadas através do parametro **actions** da URL. Ex: wp-admin/admin.php?page=teste&action=index, wp-admin/admin-post.php?page=teste&action=index e wp-admin/admin-ajax.php?page=teste&action=index
Quando uma ação não estiver setCallback() ou setData(), é necessário adicionar uma controller na página dela para chamar um método com respectivo nome da ação em camelCase complementado com Action. Ex: action buscar-todos => buscarTodosAction().
####6º Controller ####
Em construção