Estoy buscando una manera de agregar un nuevo tipo de control al panel de vista previa en vivo personalizado . He visto cómo agregar nuevas secciones al panel usando
add_action( 'customize_register'...
El control que quiero implementar es un tipo diferente de selector de color. En una publicación anterior , vemos cómo extender las clases principales para agregar widgets, pero lo que me falta aquí es un gancho que me permitirá llevar mi objeto al alcance: WP_Customize_Palette_Control. A
Puedes ver los comienzos del código aquí . Este código está en el functions.php
archivo de mi tema.
Gracias por cualquier ayuda. Robar
Acabo de actualizar el código. Ahora tengo require_once
que traer las clases. Así que ahora no tengo errores de PHP pero mi nuevo control HTML no 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' );
Respuestas:
Ejemplo y clase de uso
Puedes ver en mi tema actual, cómo es posible usar esto. También puedes usar la clase. Vea esta clase en Github y verifique
functions.php
si incluye esto.Inicio e inicio
Puede registrar su configuración personalizada para el personalizador de temas a través del
customize_register
gancho:Uso en el tema:
Úselo, como en el ejemplo a continuación ↓:
Ajustes
También puedes cambiar el control:
El tipo de control predeterminado es
text
. Crea un control de cuadro de texto. Otro tipo de control esdropdown-pages
, que crea una lista desplegable de las páginas de WordPress.Pero eso no es todo. En realidad, hay varios más, pero debido a que son tan personalizados, se declaran de manera diferente.
Este hace uso de OOP:
Notas adicionales:
WP_Customize_Upload_Control
- Esto le da un cuadro de carga para archivos. Sin embargo, probablemente no usará esto directamente, querrá extenderlo para otras cosas ... como:WP_Customize_Image_Control
- Esto le brinda el selector de imágenes y el cuadro del cargador. Extiende el controlador de carga. Puede verlo en acción en la pieza de fondo personalizada, donde un usuario puede cargar un nuevo archivo para que sea la imagen de fondo.WP_Customize_Header_Image_Control
- Debido a la acción de cambio de tamaño de la pieza del encabezado, necesita un poco de manejo y visualización especial, por lo queWP_Customize_Header_Image_Control
extiende elWP_Customize_Image_Control
para agregar esa funcionalidad. Puede verlo en acción en el encabezado personalizado, donde un usuario puede cargar un nuevo archivo para que sea la imagen del encabezado.Puede encontrar más información sobre "Personalizador de temas" en el blog ottos .
Actualización 11/06/2012
Ejemplo en vivo para posibilidades de lectura y más ejemplos, vea el repositorio abierto para la fuente y el doku.
Actualización 15/01/2013
Hemos creado un repositorio en github con una clase personalizada para usarlo, fácil y listo. Tal vez solo pueda usarlo o avanzar con sus ideas y soluciones.
fuente
Ok, aquí está cómo hacer esto. Separe su (s) clase (s) de control en uno o más archivos nuevos.
Tienes una función o método enganchado a personalizar_registro, ¿verdad? En esa función o método, se requieren una vez sus nuevos archivos justo antes de agregar sus controles personalizados. Entonces PHP no se quejará de redefinir clases.
Nota: Esto no funcionará de la caja, pero muestra el truco.
fuente
Nunca estás usando tu clase. Intente pasar una nueva instancia de su clase al método add_control:
Además, no creo que WP sepa que el nombre de la opción para su configuración es parte de una matriz. Tal vez es mejor tener en
themename_theme_options_color_scheme
lugar dethemename_theme_options[color_scheme]
.La clase que amplía pertenece al control de carga de imágenes. Si está creando un selector de color, probablemente debería extender la clase WP_Customize_Control .
fuente
Solo para completar: un ejemplo sobre cómo agregar un campo de número al Personalizador de temas.
fuente
number
comotype
Control predeterminado y usarinput_attrs
para pasarstep
, etc.Creo que debe agregar una barra diagonal inversa antes de WP_Customize. Así será
, Porque la barra diagonal inversa supone que WP_Customize_Image_Control no proviene del mismo espacio de nombres
Avísame si ayudó
fuente