Customizador de temas: como criar um painel de vários níveis

4

Existe uma maneira de criar um sub-painel de nível profundo no Customizador de temas (como raízes de plantas)? Meu tema que venho desenvolvendo parece ser mais complicado. Eu acho que se nós pudermos criar um sub-painel de nível profundo, nossa Página do Personalizador não parecerá confusa, nosso usuário irá personalizar nosso tema mais facilmente e nós seremos capazes de tornar o tema do WordPress muito mais complicado. As imagens abaixo descrevem a minha ideia ...

Infelizmente,tenteipesquisarsobreesse,massóconseguiencontrarumamaneiradecriarumpaineldenívelúniconoCustomizadordeTemas,aquiestáoqueeuencontreiem outro tópico , não foi possível encontrar uma maneira de tornar o Sub Panel mais profundo. Você poderia, por favor, sombrear alguma luz em minha vida?

Atualizar : o código a seguir é algum código que eu uso para criar o Painel e Controlar como a imagem nº 1, que é o painel de nível único. todos eles funcionam bem.

$wp_customize->add_panel('panel1',
        array(
            'title' => 'Panel 1',
            'priority' => 1,
            )
        );
        $wp_customize->add_section( 'section1',
            array(
                'title' => 'This is section 1',
                'priority' => 1,
                'panel' => 'panel1'
                )
            );
            $wp_customize->add_setting('field1', array('default' => 'default text'));
            $wp_customize->add_control('field1', array(
                'label' => 'Text field',
                'section' => 'section1',
                'type' => 'text',
                )
            );

Meu problema é que eu quero criar um novo painel e deixá-los em outro painel que fará com que pareça com a hierarquia das raízes (imagem # 2). Eu acho que se pudermos fazer algo assim, poderemos faça personalizador de tema muito mais poderoso. Então tentei realizar essa ideia e tentei reescrever meu código. Infelizmente, não funcionou. Por favor, verifique o seguinte.

$wp_customize->add_panel('panel1',
        array(
            'title' => 'Panel 1',
            'priority' => 1,
            )
        );
        $wp_customize->add_section( 'section1',
            array(
                'title' => 'This is section 1',
                'priority' => 1,
                'panel' => 'panel1'
                )
            );
            $wp_customize->add_setting('field1', array('default' => 'default text'));
            $wp_customize->add_control('field1', array(
                'label' => 'Text field',
                'section' => 'section1',
                'type' => 'text',
                )
            );
        // I used the code below with a little hope that it will help me accomplish my idea, but it didn't work T^T.
        $wp_customize->add_panel('panel1_1',
            array(
                'title' => 'Panel 1.1',
                'priority' => 2,
                'panel' => 'panel1' // I tried adding this line of code in order to let it depend on another panel
                )
            );
            $wp_customize->add_section( 'section1_1',
            array(
                'title' => 'This is section 1',
                'priority' => 1,
                'panel' => 'panel1_1'
                )
            );
            $wp_customize->add_setting('field1_1', array('default' => 'default text'));
            $wp_customize->add_control('field1_1', array(
                'label' => 'Text field',
                'section' => 'section1_1',
                'type' => 'text',
                )
            );

Poderia, por favor, me dar a solução, não consigo descobrir como fazer o painel parecer hierarquia de raízes. Qualquer ajuda seria apreciada:)

    
por Pakpoom Tiwakornkit 23.08.2015 / 08:09

2 respostas

3

Para qualquer um que venha aqui procurando por isso, eu consegui fazer isso depois de lutar por algumas horas.

O código é um pouco extenso, então não queria postar aqui, (mods sinta-se à vontade para me deixar agora se isso for melhor), ao invés disso eu criei uma essência: enlace

O que ele faz basicamente é permitir que você especifique a propriedade panel em painéis (para painéis aninhados em painéis) e em section em seções (para seções de aninhamento em seções).

Notas:

  • O código php inclui um exemplo de como criar painéis / sub-painéis / seções / subseções. Vale a pena notar que você instanciar novos painéis / seções usando a subclasse que criei, de chamar diretamente $wp-customize->add_panel e passar um matriz de configuração.
  • Os arquivos JS e CSS não precisam ser modificados. Se você estava se perguntando por que o CSS é necessário, está lá para corrigir a animação ao fazer a transição de painéis para sub-painéis e seções para subseções.
  • Ao criar subseções, adicione também uma propriedade panel , que deve ser igual à panel da seção pai

Eu tentei fazer isso com o menor código possível e sem sobrescrever qualquer coisa que pudesse estragar o código de outras pessoas. Alguma refatoração pode ser necessária se eles mudarem a lógica nas versões futuras, eu fiz isso como a prova do futuro que pude.

    
por OriginalEXE 11.02.2017 / 17:50
2

No momento, simplesmente não é possível ter mais que painéis, seções e controles. Expandir este sistema exigiria uma extensa programação no WP. Dado o tamanho estreito do personalizador, você também pode se perder facilmente se tiver tantos painéis aninhados. Então provavelmente não é desejável.

    
por cjbj 16.05.2016 / 18:52