PHP code example of jhorlima / wp-mocabonita

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());