Estou procurando uma maneira de adicionar um novo tipo de controle ao painel de visualização ao vivo de personalização . Eu vi como adicionar novas seções ao painel usando
add_action( 'customize_register'...
O controle que quero implementar é um tipo diferente de seletor de cores. Em uma postagem anterior , vemos como estender as classes principais para adicionar widgets, mas o que me falta aqui é um gancho que me permitirá colocar meu objeto no escopo - WP_Customize_Palette_Control. At
Você pode ver o início do código aqui . Este código está no functions.php
arquivo do meu tema.
Obrigado por qualquer ajuda. Roubar
Apenas atualizei o código. Agora eu tenho require_once
que trazer as aulas. Portanto, agora não tenho erros de PHP, mas meu novo controle HTML não aparece.
<?php
require_once( ABSPATH . WPINC . '/class-wp-customize-setting.php' );
require_once( ABSPATH . WPINC . '/class-wp-customize-section.php' );
require_once( ABSPATH . WPINC . '/class-wp-customize-control.php' );
class WP_Customize_Palette_Control extends WP_Customize_Image_Control {
public $type = 'palette';
public $removed = '';
public $context;
public function enqueue() {
//wp_enqueue_script( 'wp-plupload' );
}
public function to_json() {
parent::to_json();
$this->json['removed'] = $this->removed;
if ( $this->context )
$this->json['context'] = $this->context;
}
public function render_content() {
?>
<label>
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
<div>
<a href="#" class="button-secondary upload"><?php _e( 'Upload' ); ?></a>
<a href="#" class="remove"><?php _e( 'Remove' ); ?></a>
</div>
</label>
<?php
}
}
//new WP_Customize_Palette_Control();
//add_action('customize_controls_init', 'WP_Customize_Palette_Control');
// add an option to the customize panel
function sci_customize_controls_init($wp_customize) {
$wp_customize->add_section( 'themename_color_scheme', array(
'title' => __( 'Color Scheme', 'themename' ),
'priority' => 35,
) );
$wp_customize->add_setting( 'themename_theme_options[color_scheme]', array(
'default' => 'some-default-value',
'type' => 'option',
'capability' => 'edit_theme_options',
) );
$wp_customize->add_control( 'themename_color_scheme', array(
'label' => __( 'Color Scheme', 'themename' ),
'section' => 'themename_color_scheme',
'settings' => 'themename_theme_options[color_scheme]',
'type' => 'palette',
'choices' => array(
'value1' => 'Choice 1',
'value2' => 'Choice 2',
'value3' => 'Choice 3',
),
) );
}
add_action( 'customize_register', 'sci_customize_controls_init' );
Respostas:
Exemplo e classe para uso
Você pode ver no meu tema atual, como é possível usar isso. Além disso, você pode usar a classe. Veja esta classe no Github e verifique a opção
functions.php
for include this.Iniciar e iniciar
Você pode registrar suas configurações personalizadas para o personalizador de temas através do
customize_register
gancho:Uso no tema:
Use-o, como no exemplo abaixo ↓:
Ajustes
Você também pode alterar o controle:
O padrão de controle do tipo é
text
. Ele cria um controle de caixa de texto. Outro tipo de controle é odropdown-pages
que cria uma lista suspensa das páginas do WordPress.Mas isso não é tudo. Na verdade, existem vários outros, mas, por serem tão personalizados, são declarados de maneira diferente.
Este usa o OOP:
Notas Adicionais:
WP_Customize_Upload_Control
- Isso fornece uma caixa de upload para arquivos. No entanto, você provavelmente não usará isso diretamente, desejará estendê-lo para outras coisas ... como:WP_Customize_Image_Control
- Isso fornece o seletor de imagens e a caixa do remetente. Estende o controlador de upload. Você pode vê-lo em ação na parte de plano de fundo personalizada, onde um usuário pode fazer upload de um novo arquivo para ser a imagem de plano de fundo.WP_Customize_Header_Image_Control
- Por causa da ação redimensionamento da peça de cabeçalho, ele precisa de um pouco de tratamento especial e exibição, de modo que oWP_Customize_Header_Image_Control
estende aWP_Customize_Image_Control
para adicionar essa funcionalidade. Você pode vê-lo em ação na parte do cabeçalho personalizada, onde um usuário pode fazer upload de um novo arquivo para ser a imagem do cabeçalho.Você pode encontrar mais informações sobre o "Theme Customizer" no blog da ottos .
Atualização 11/06/2012
Exemplo ao vivo para possibilidades de leitura e mais exemplos, consulte o repositório aberto da fonte e do doku.
Atualização 15/01/2013
Criamos um repositório no github com classe personalizada para usá-lo, fácil e pronto. Talvez você só possa usá-lo ou avançar com suas idéias e soluções.
fonte
Ok, aqui está como fazer isso. Separe suas classes de controle para um ou mais novos arquivos.
Você tem uma função ou método viciado em customize_register, certo? Nessa função ou método, exija uma vez seus novos arquivos antes de adicionar seus controles personalizados. Então o PHP não se queixará de redefinir classes.
Nota: Isso não funcionará imediatamente, mas mostra o truque.
fonte
Você nunca está usando sua classe. Tente passar uma nova instância da sua classe para o método add_control:
Além disso, não acho que o WP saiba que o nome da opção para sua configuração faz parte de uma matriz. Talvez seja melhor ter em
themename_theme_options_color_scheme
vez dethemename_theme_options[color_scheme]
.A classe que você está estendendo pertence ao controle de upload de imagens. Se você estiver criando um seletor de cores, provavelmente deverá estender a classe WP_Customize_Control .
fonte
Apenas para completar: um exemplo de como adicionar um campo numérico ao Theme Customizer.
fonte
number
como otype
de padrão de controle, e usarinput_attrs
a passarstep
, etc.Eu acho que você precisa adicionar uma barra invertida antes do WP_Customize. Então, será
, Como a barra invertida assumiu que o WP_Customize_Image_Control não era do mesmo Namespace
Deixe-me saber se ajudou
fonte