我已经将自己的设置添加到Wordpress定制器中并进行了设置,以便使用“ postMessage”方法进行实时预览。与当我编辑链接到段落文本的字段时,它几乎完美地工作,预览不显示段落中的换行符。但是,这是暂时的,一旦关闭了定制器或刷新了页面,段落间隙就会重新出现。
我正在使用以下代码在Customizer.php中定义Customizer部分:
// About Section Text
$wp_customize->add_setting( 'about__text' , array(
'default' => 'Lorem ipsum dolor sit amet consectetur, adipisicing elit. Blanditiis, odit unde magnam dolores quasi voluptas, impedit a nam inventore atque eaque nobis possimus officiis deleniti quisquam animi deserunt ad ipsa sapiente illo?',
'transport' => 'postMessage',
) );
// About Section Text (CONTROL)
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'about__text', array(
'label' => __( 'About Section Content:', 'mytheme' ),
'section' => 'edit__homepage--section',
'settings' => 'about__text',
'priority' => 3,
'type' => 'textarea'
) ) );
我正在使用以下代码在index.php文件中显示以上主题mod:
<div class="about__text">
<?php echo wpautop(get_theme_mod('about__text')); ?>
</div>
这是我的jquery:
( function( $ ) {
wp.customize( 'about__text', function( value ) {
value.bind( function( newVal ) {
$( '.about__text' ).html( newVal );
} );
} );
} )( jQuery );
我已经尝试过尝试使用不同的jquery对象,例如text()和contents(),但是这些对象具有相同的问题或根本无法工作。
有人知道我是否有办法让JavaScript预览来纪念段落样式?也许像wpautop()的javascript版本?
答案 0 :(得分:0)
您可以像这样使用选择性刷新。值呈现在服务器端,因此不需要额外的JS。而且,由于只有选定的包装器元素可以刷新,因此它比Customizer中的整页重新加载效率更高。在以下示例中,仅刷新.about__text
中的内容。由于渲染是在服务器端完成的,因此无需寻找wpautop函数的JS替代方法。我相信这将是您在问题中提到的问题的另一种选择。
function wpso_customize_register( $wp_customize ) {
$wp_customize->selective_refresh->add_partial(
'about__text',
array(
'selector' => '.about__text',
'render_callback' => function(){
echo wp_kses_post( wpautop( get_theme_mod('about__text') ) );
},
)
);
}
add_action( 'customize_register', 'wpso_customize_register' );