Aproximação correta para estilo / modelo de saída de plug-in

4

Estou criando um plug-in que precisa gerar resultados no front-end do site. Tentei manter a aparência padrão o mais limpa possível, mas também gostaria de facilitar a modificação dos usuários.

Meu pensamento é incluir a capacidade de carregar uma folha de estilo personalizada em vez da padrão, se o usuário criar uma folha de estilo com um nome específico em seu tema. Quaisquer sugestões sobre como construir essa funcionalidade?

No caso mais extremo de o usuário querer alterar completamente o HTML / PHP usado para a saída, criei uma ação e anexei minha função de exibição a essa ação. Dessa forma, um usuário pode desassociar minha função de exibição padrão e anexar sua função de exibição personalizada através do gancho disponível.

Esta é a abordagem correta para isso?

    
por urok93 17.02.2013 / 18:01

1 resposta

6

Torne-o o mais simples possível para desenvolvedores de temas. A maioria não é programadora. Existem duas opções muito simples:

add_theme_support () e get_theme_support ()

Forneça um identificador e algumas opções. Digamos que seu identificador seja drtanz_plugin . Agora, um autor de um tema pode adicionar o seguinte ao functions.php :

do seu tema
add_action( 'after_setup_theme', 'prefix_register_theme_support' );

function prefix_register_theme_support()
{
    add_theme_support(
        'drtanz_plugin',
        array (
            'template'   => get_template_directory() . '/templates/drtanz_plugin.php',
            'stylesheet' => FALSE
        )
    );
}

No seu plugin, você pode verificar o suporte ao tema agora:

$plugin_options = array (
    'template'      => get_template_directory() . '/templates/drtanz_plugin.php',
    'stylesheet'    => plugins_url( 'default.css', __FILE__ ),
    'show_comments' => TRUE
);

if ( $theme_options = get_theme_support( 'drtanz_plugin' ) )
    $plugin_options = array_merge( $plugin_options, $theme_options );

O autor do tema não alterou o parâmetro show_comments , portanto, você usa o padrão.

Pro: Fácil de estender, muito poderoso.
Con: Pode ser difícil demais para algumas pessoas.

Use locate_template ()

Eu fiz isso no meu plugin Preview do T5 Opera Speed Dial . Basta verificar se existe um modelo com um nome específico no tema e tentar obter o caminho. Se nenhum modelo foi encontrado, use o seu próprio.

$template = 'speed-dial.php';
$path     = locate_template( array ( $template ) );

if ( '' != $path and file_exists( $path ) )
    require $path;
else
    require dirname( __FILE__ ) . "/$template";

Pro: fácil de aprender. Apenas certifique-se, o nome que você usa é único. Você pode adicionar recursos *_theme_support mais tarde, se precisar deles.
Con: É realmente apenas o modelo, sem recursos adicionais. E você não pode alterar o nome do modelo mais tarde, porque isso quebraria as coisas.

Você pode combinar as duas abordagens, mas eu usaria apenas uma. É mais fácil aprender.

    
por fuxia 17.03.2013 / 05:03

Tags