WordPress Customizer: configurando tu sitio en tiempo real
Disertación brindada en WordCamp Buenos Aires 2015 sobre el Customizer en WordPress y como emplearlo para
1. crear páginas de ajustes para plugins
2. guardar post meta específico a cada post (en vez de un setting como theme_mod u option)
para el Customizer. * @param object $wp_customize Instancia de WP_Customizer_Manager. */ function queryloop_customize_register( $wp_customize ) { // Iniciar panels, sections, controls y sus settings. } add_action( 'customize_register', 'queryloop_customize_register' );
plugin // http://ejemplo.com/wp-admin/customize.php?url=URL&return=RETURN&miplugin=true $link = add_query_arg( 'miplugin', 'true', $link ); Visible en los controles // http://ejemplo.com/documents/?document_id=true 'url' => urlencode( add_query_arg( ‘document_id', 'true', get_post_type_archive_link( 'document' ) ) ), Visible en la previsualización ¡Cuidado aquí que el nombre del parámetro no sea un post type!
'queryloop_settings' ); if ( isset( $settings['mostrar_titulo_pagina'] ) ) { // mostrar el título de esta página } else { // no mostrar título } $mostrar_titulo = get_option( 'queryloop_setting_unico' ); if ( $mostrar_titulo ) { // mostrar el título de esta página } else { // no mostrar título }
* Si se provee el id del post, guardar post meta. * @param mixed $valor Valor a guardar en el setting. * @param WP_Customize_Setting $setting Instancia de WP_Customize_Setting. */ function queryloop_guardar_meta( $valor, $setting ) { if ( isset( $_GET['document'] ) && ctype_digit( $_GET['document'] ) ) { update_post_meta( $_GET['document'], $setting->id, $valor ); } } // wp-includes/class-wp-customize-setting.php add_action( 'customize_update_ql_meta', 'queryloop_guardar_meta', 10, 2 );
'default' => isset( $_GET['document'] ) ? get_post_meta( $_GET['document'], 'un_meta_key', true ) : '', 'capability' => 'customize', ) ); $valor = get_post_meta( get_the_ID(), 'un_meta_key', true ); Usamos la propiedad ‘default’ para los controles En la previsualización o front end final