在定制器中添加快捷代码支持

时间:2016-11-30 作者:maheshwaghmare

如何添加shortcode 支持Customizer live preview。我已经使用transport实现了实时预览postMessage 但是,它只是反映了HTML的现状。

我想我需要使用selective_refresh 在自定义程序预览中使用快捷代码。

我不知道如何获取当前HTMLselective_refresh.

检查下面的代码段。

步骤:1-添加面板、部分、设置(带\'transport\' => \'postMessage\' ) 和控制。

/**
 * Add panel
 */
$wp_customize->add_panel( \'my-sample-panel\', array(
    \'title\'    => __( \'Sample Panel\', \'next\' ),
) );

/**
 * Add section
 */
$wp_customize->add_section( \'my-sample-section\', array(
    \'title\'    => __( \'Sample Section\', \'next\' ),
    \'panel\'    => \'my-sample-panel\',
) );

/**
 * Add setting
 */
$wp_customize->add_setting( \'my-sample-text-option\', array(
    \'default\'   => \'\',
    \'type\'      => \'option\',
    \'transport\' => \'postMessage\',
) );

/**
 * Add control
 */
$wp_customize->add_control( \'my-sample-text-option\', array(
    \'section\'        => \'my-sample-section\',
    \'label\'          => __( \'Text / HTML\', \'next\' ),
    \'type\'           => \'textarea\',
) );
步骤:2-定制器customizer-preview.js.

( function( $ ) {

    /**
     * Text / HTML
     */
    wp.customize( \'my-sample-text-option\', function( value ) {
        value.bind( function( new_value ) {
            jQuery( \'.custom-html-section\' ).html( new_value );
        } );
    } );

} )( jQuery );
步骤:3-前端HTML

<div class="custom-html-section"></div>
上述代码片段替换目标选择器中的HTML。

我累了Partial support 通过避免Step: 2

部分支持

/**
 * Add partial refresh
 */
if ( isset( $wp_customize->selective_refresh ) ) {

    $wp_customize->selective_refresh->add_partial( \'my-sample-text-option\', array(
        \'selector\'            => \'.custom-html-section\',
        \'container_inclusive\' => false,
        \'render_callback\'     => function() {
            return get_bloginfo( \'name\', \'display\' );
        },
    ) );
}
在这里,我使用get_bloginfo( \'name\', \'display\' ) 它按预期显示博客名称。

但是,如何从setting 并应用do_shortcode?

预期如下:

\'render_callback\'     => function() {
    return do_shortcode( $UPDATED_CONTROL_CONTENTS ); // Expect like this to work shortcode in customizer.
    // return get_bloginfo( \'name\', \'display\' );
},

1 个回复
SO网友:maheshwaghmare

最近,我不知道如何在中获取更新的自定义程序内容$UPDATED_CONTROL_CONTENTS 中的变量selective_refresh.

我用过type => option 用于设置。因此,它将日期存储在option 名称my-sample-text-option.

因此,使用get_option() 我可以从customizer获得更新选项。

解决方案:

/**
 * Add partial refresh
 */
if ( isset( $wp_customize->selective_refresh ) ) {

    $wp_customize->selective_refresh->add_partial( \'my-sample-text-option\', array(
        \'selector\'            => \'.custom-html-section\',
        \'container_inclusive\' => false,
        \'render_callback\'     => function() {

            // Get update data from option `my-sample-text-option` using funcition get_option()
            $options = get_option( `my-sample-text-option` );
            return do_shortcode( $options );

        },
    ) );
}

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register