Ir ao conteúdo

Posts com a tag ‘poo’

29
out

Como retornar a quanto tempo atrás um item foi adicionado

Developers,

Em um recente projeto, precisei criar uma função para um plugin WordPress em que me retorna-se quanto tempo atrás um item tinha sido adicionado. Exemplo: 1 min atrás, 5 horas atrás…. assim como o WordPress faz para exbir a data de criação dos posts.

Para isso criei o método abaixo, em que passo a data do registro e obtenho o quantidade de minutos, horas ou dias em que um item foi adicionado ao banco de dados.

/**
 * Rertorna a quanto tempo atrás um item foi adicionado a partir de sua data de registro
 *
 * @author Daniel Rocha (@danieldeveloper)
 * @param string $datetime
 * @return string
 */
public static function get_human_time_diff( $datetime )
{
    if( '0000-00-00 00:00:00' == $datetime )
        return __( 'Unregistered' );

    $current_time = strtotime( date_i18n( 'Y/m/d H:i:s' ) );
    $checked_time = strtotime( $datetime );
    $difference_time = abs( $current_time - $checked_time );

    // Only if the difference is less than 24 hours
    if( $difference_time > 86400 )
        return date( __( 'd/m/Y' ), $checked_time );

    return sprintf( __( '%s ago' ), human_time_diff ( $checked_time, $current_time ) );
}

Obs: Este método foi criado para ser usado em plugins WordPress e depende de outras funções do WordPress para sua execução. Também está preparado para plugins OOP, se não estiver usando OOP declare apenas function get_human_time_diff() {…

É isso developers, qualquer sugestão, manda pra mim.

Fonte: O próprio core do WordPress

23
set

Desenvolvendo plugins WordPress Orientados a Objetos

Developers,

a alguns meses venho desenvolvendo plugins para WordPress utilizando programação orientada a objetos, e notei o quão ficou mais fácil desenvolvê-los. Sabemos que 98% dos plugins desenvolvidos não usam POO, e hoje com a quantidade enorme de plugins existentes, é muito mais fácil entrarem em conflito.

Por que desenvolver plugins orientados a objetos?

Usando orientação a objetos, seus códigos ficam mais legíveis e suas funções reutilizáveis, além de poder definir constantes, variáveis e funções sem se preocupar com conflitos entre outros plugins que usem métodos com o mesmo nome.

Pré-requisitos

Bom, primeiramente, devemos ter um bom conhecimento sobre WordPress e a API de plugins do mesmo. Saber orientação a objetos (POO) também é imprescindível. :D

Como seria o desenvolvimento afinal?

Simples, o cabeçalho do plugin não sofre alterações quanto a isso, irá continuar com o padrão do WordPress.

<?php
/*
Plugin Name: Daniel Developer POO
Plugin URI: http://danieldeveloper.com
Description: Exemplo de como usar Orientação a Objetos em um plugin WordPress
Version: 1.0
Author: Name Daniel Developer
Author URI: http://danieldeveloper.com
License: GPL2
*/
?>

Agora, precisamos criar a classe do plugin, juntamente com seu método construtor e instanciar o objeto.

Usando PHP 4, teremos:

<?php
class DanielDeveloperPOO {

function DanielDeveloperPOO()
{
echo 'Acessando a função contrutora com PHP 4';
}
}

$plugin_danieldeveloper_poo = new DanielDeveloperPOO();
?>

Usando PHP 5, teremos:

<?php
class DanielDeveloperPOO {

public function __construct()
{
echo 'Acessando a função contrutora com PHP 5';
}
}

$plugin_danieldeveloper_poo = new DanielDeveloperPOO();
?>

Mas porque a diferença entre as duas versões? Simples, a versão 4 do PHP não tem suporte à métodos de orientação a objetos por completo. Como se nota, na versão 4, o método construtor recebe o mesmo nome da classe, e os outros métodos não recebem definições como public, protected, private. Ao contrário da versão 5 do PHP que é mais completo em relação a orientação a objetos.

Neste artigo vamos adotar o PHP 5 para concluirmos nosso exemplo.

Continuando, ao adicionar hooks (ganchos) e filtros em seu plugin, todos eles devem estar dentro do método construtor. Veja um exemplo abaixo:

<?php
class DanielDeveloperPOO {

public function __construct()
{
add_action( 'init', array( &$this, 'textdomain') );
add_action( 'admin_menu', array( &$this, 'menu') );
}

public function textdomain()
{
//...
}

public function menu()
{
//...
}
}

$plugin_danieldeveloper_poo = new DanielDeveloperPOO();
?>

Note que temos novidades na função add_action dos ganchos (linha 6 e 7) ao definir qual método do plugin deverá ser executado. Pois bem, precisamos passar esse array referenciando o objeto em que estamos, juntamente com o nome do método, assim o gancho do WordPress interpretará normalmente qual método executar dentro do seu plugin.

Desenvolver um plugin orientado a objetos é muito interessante para seu código, seu dia-a-dia e para dar aqueles famosos upgrades. Quando desenvolvemos em POO, podemos definir quais métodos estarão públicos e quais estarão disponíveis apenas para o plugin em si. Veja um exemplo abaixo:

<?php
class DanielDeveloperPOO {

public function __construct()
{
add_action( 'admin_menu', array( &$this, 'menu') );
}

public function menu()
{
add_menu_page( 'POO', 'POO', $this->_get_capability(), '' );
}

public function output_capability()
{
echo $this->_get_capability();
}

private function _get_capability()
{
return 'administrator';
}
}

$plugin_danieldeveloper_poo = new DanielDeveloperPOO();
?>

Note o método _get_capability(), ela é privado da classe DanielDeveloperPOO, portanto só poderá ser acessado a partir dela e não de outros arquivos ou classes, dando mais integridade ao seu plugin. No exemplo acima , o método é usado por outros métodos dentro da classe e nunca poderá ser usado ou chamado fora dela.

Observação: Todo método chamado pelos hooks (ganchos), deverão ser publicos, nunca privados ou protegidos. A função add_action é externa e precisa executar métodos definidos em nosso plugin.

Outra coisa que nos deixa mais a vontade ao desenvolver com Orientação a Objetos, é o fato de não nos preocuparmos com os nomes que daremos aos métodos de nosso plugin. Quando programamos em POO, encapsulamos nosso plugin e podemos dar os nomes que desejarmos aos nossos métodos, sem nos preocupar com conflitos entre funções de outros plugins e do WordPress.

É isso Developers, agora que já sabem como usar POO em seus plugins WordPress, vamos colocar a mão na massa? Nossos plugins ficarão mais profissionais e poderão servir de exemplo para muitos outros desenvolvedores. Deixe suas dúvidas e comentários para que possa ajudá-lo.

Bom trabalho a todos.

Obs: Esses produtos abaixo listados, são ofertas de produtos do BuscaPé. Para fazer isso é usado o plugin Lomadee WP – Ofertas Relacionadas, ele foi desenvolvido com orientação a objetos e é um bom exemplo para vocês baixarem e darem uma olhada no seu código.

[lomadeewpro category='' keywords='dell']

 

4
set

Boas práticas para o desenvolvimento de plugins WordPress

Developers,

hoje listo tópicos de boas práticas no desenvolvimento de plugins para WordPress, leia, reflita, deixe suas dúvidas e/ou novos tópicos não abordados aqui.

Programação Orientada a Objetos (POO)

Desenvolver plugins orientado a objetos nos possibilitada a reutilização de seus métodos o deixa mais flexível para fazer atualizações futuras. Além disso deixa seu código muito mais robusto e de qualidade.

Funções Nativas

O WordPress é rico em pequenas e grandes funções que nos ajuda e muito ao desenvolver um plugin, além de nos oferecer ganchos e filtros para alterar-mos algumas de suas funções.

Nomes descritivos

Dê nomes mais descritivos aos seus plugins, isso facilita as buscas e ajuda na interpretação dos desenvolvedores que navegam pelos códigos. Dê o mesmo nome do plugin como prefixo para os arquivos.

Organização

Organize os arquivos de seu plugin, separe CSS e Javascript, imagens, arquivos de traduções. Seja organizado, isso ajuda na manutenção junto com a orientação a objetos dita anteriormente.

Desinstalação

Sempre crie uma função de desinstalação para seu plugin. Evite deixar lixos como tabelas de banco de dados, options do wordpress e imagens. Isso pode sobrecarregar o servidor do usuário e não é legal.

Visual padronizado

Padronize seus plugins com o visual do WordPress, use classes CSS e funções Javascript nativas da administração do WordPress. Assim o usuário não se perde e fica mais a vontade com o visual do seu plugin.

Bom developers, essas são algumas das minhas sugestões, tem alguma? Comente aí!