1. Go to this page and download the library: Download jhorlima/wp-mocabonita library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jhorlima / wp-mocabonita example snippets
/**
* Plugin Name: Exemplo de Plugin
* Plugin URI: http://exemplo.plugin.com
* Description: Um exemplo de Plugin WordPress com MocaBonita
* Version: 1.0.0
* Author: Fulando
* Author URI: http://www.github.com/fulando
* License: GLPU
*
* @doc: https://developer.wordpress.org/plugins/the-basics/header-gin seja carregado fora do Wordpress
* @doc: https://codex.wordpress.org/pt-br:Escrevendo_um_Plugin#Arquivos_de_Plugin
*/
if (!defined('ABSPATH')) {
die('Acesso negado!' . PHP_EOL);
}
/**
* Carregar o autoload do composer
* Adicionar o namespace atual para ser interpretado pelo autoload do composer
*/
$pluginPath = plugin_dir_path(__FILE__);
$loader = gin
*/
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.
use MocaBonita\tools\MbPage;
use MocaBonita\tools\MbAsset;
/**
* Criando uma página para o Plugin
*/
$paginaExemplo = MbPage::create('Exemplo');
/**
* Configuração Padrão ao criar uma página do MocaBonita
* O Slug da página, por padrão, é criado ao definir o nome. Ele utiliza a função do
* Wordpress sanitize_title no nome para gerar o slug.
* @doc: https://codex.wordpress.org/Function_Reference/sanitize_title
*/
$paginaExemplo->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');
/**
* 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);
use MocaBonita\tools\MbPage;
$paginaTeste = MbPage::create('Teste');
$paginaExemplo->setSubPage($paginaTeste);
$paginaExempo->addSubPage('Teste', 'teste');
use MocaBonita\tools\MbPage;
$paginaTeste = MbPage::create('Teste');
$paginaTeste->addMbAction("index");
use MocaBonita\tools\MbPage;
use MocaBonita\tools\MbRequest;
use ExemploPlugin\model\Exemplo;
$paginaTeste = MbPage::create('Teste');
$indexAction = $paginaTeste->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());
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.