Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Novas classes de opções do tema e metabox #141

Closed
claudiosanches opened this issue Feb 16, 2014 · 9 comments
Closed

Novas classes de opções do tema e metabox #141

claudiosanches opened this issue Feb 16, 2014 · 9 comments

Comments

@claudiosanches
Copy link
Member

Já tem algum tempo que não estou satisfeito com o jeito que criamos as opções do tema, metaboxes e outras coisas.

Hoje funciona muito bem do jeito que esta, entretanto acaba ficando confuso para quem não manja muito ficar criando aquela infinidade de arrays que fazemos hoje!

Desta forma pensei em criar isso de uma forma mais simples, acabei de fazer uma primeira vez com as opções do tema apenas (depois preciso abstrair mais para poder usar a mesma classe de campos para os metaboxes também e etc) para ver como que fica e se todo mundo aprova.

As classes estão no branch new_settings para quem quiser testar e aqui vai um exemplo de como usar:

require_once get_template_directory() . '/core/classes/class-odin-theme-options-fields.php';
require_once get_template_directory() . '/core/classes/class-odin-theme-options-sections.php';
require_once get_template_directory() . '/core/classes/class-odin-theme-options-tabs.php';
require_once get_template_directory() . '/core/classes/class-odin-theme-options.php';

function test_new_theme_options() {
    if ( is_admin() ) {
        // Creates the options page.
        $options = new Odin_Theme_Options(
            'odin-settings',
            __( 'Odin Settings', 'odin' )
        );

        // Creates the tabs.
        $settings = $options->add_tab( 
            'settings',
            __( 'Settings', 'odin' )
        );
        $banners  = $options->add_tab( 
            'banners',
            __( 'Banners', 'odin' )
        );

        // Settings sections.
        $general = $settings->add_section( 
            'general',
            __( 'General', 'odin' )
        );
        $social  = $settings->add_section( 
            'social',
            __( 'Social', 'odin' )
        );

        // General fields.
        $general->add_text_field(
            'slogan',                            // id
            __( 'Site slogan', 'odin' ),         // label
            __( 'Hello World', 'odin' ),         // default option
            __( 'Slogan for the site', 'odin' )  // description
        );
        $general->add_textarea_field(
            'description',
            __( 'Site description', 'odin' )
        );
        $general->add_color_field(
            'background',
            __( 'Background Color', 'odin' ),
            '#333333'
        );
        $general->add_image_field(
            'logo',
            'Logo'
        );

        // Social fields
        $social->add_text_field(
            'twitter',
            __( 'Twitter', 'odin' ),
            '',
            __( 'Twitter username', 'odin' )
        );
        $social->add_text_field(
            'facebook',
            __( 'Facebook', 'odin' ),
            '',
            __( 'Facebook page URL', 'odin' )
        );

        // Banners sections.
        $banner = $banners->add_section( 
            'banner',
            __( 'Banner', 'odin' )
        );

        // Banners fields.
        $banner->add_textarea_field(
            'header',
            __( 'Header' ),
            '',
            __( 'Banner 728x90px', 'odin' )
        );
    }
}

add_action( 'init', 'test_new_theme_options', 1 );

Acredito que desta forma fica muito mais claro visualizar que tipo de campo você esta criando e dentro de qual sessão e em qual aba xD

Aqui como fazemos hoje para vocês comparem:

http://wpod.in/pt-br/docs/criando-opcoes-para-tema/#exemplo

Comentem!

Commit: 9c2248c

@claudiosanches claudiosanches added this to the v3.0.0 milestone Feb 16, 2014
@walterjaworski
Copy link

Acho válido demais. Realmente ficou bem mais fácil entender.

@fdaciuk
Copy link
Contributor

fdaciuk commented Feb 16, 2014

Eu curti! Ficou mais fácil separar as coisas.. dá pra deixar os métodos bem menores agora sem precisar dividir os arrays e dar merge depois xD

Só uma dúvida: vai mudar o core pra funcionar assim, ou só vai criar métodos pra consumir os que já existem hoje? Só pra eu saber, pois estou trabalhando (a passos curtos xD) no esquema do checkbox pra ficar habilitado por padrão e no repeater :)

@fdaciuk
Copy link
Contributor

fdaciuk commented Feb 16, 2014

Sorry, não tinha visto o commit xD

Bom, pelo que vi, vai ficar bem mais fácil pra implementar o repeater agora o/

Vai ficar as duas versões ativas (anterior e essa) ou somente essa? Pergunto mais pela questão da atualização. Se a galera estiver usando a versão anterior e migrar pra essa vai quebrar né?

Daria talvez pra fazer uma classe "Odin_Migrate" pra quem quiser usar a versão nova, mas já tiver implementado com a versão antiga xD

@claudiosanches
Copy link
Member Author

A ideia é praticamente zerar mesmo e fazer desta forma bem melhor.
Não vai ser complicado usar este jeito novo e ai quem quiser migrar algum projeto fica bem simples.
Até o que esta ai não é o final, porque quero abstrair mais ainda para poder usar a mesma classe de campos no para metaboxes.

@fdaciuk
Copy link
Contributor

fdaciuk commented Feb 16, 2014

Muito bom! Vai diminuir bastante a repetição de código pra criação dos custom fields =D
Vou esperar você terminar a ideia então pra fazer o repeater.

Nessa versão você também pretende já remover o Grunt pra usar como submódulo? Vou deixar a doc do Gulp certinha já pra mostrar como usar ele dessa forma. Depois dá pra fazer um só pro Grunt também :)

@claudiosanches
Copy link
Member Author

Então, não sei ainda, vamos avaliar isso do Grunt.

Essas classes ai acho que vai ser rápido, o mais complicado esta pronto já xD

@fdaciuk
Copy link
Contributor

fdaciuk commented Feb 16, 2014

Massa! Let's go on! o/

@fccoelho7
Copy link
Member

Além de economizar código, ficou super simples! Aprovado.

@allysonsouza
Copy link
Member

Fechando esta issue aqui, movida para o Odin Toolkit: wpbrasil/odin-toolkit#4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants