テーマを開発していますが、選択的に更新しなくてもビジュアル編集のショートカットを追加できるのではと思いますか。
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->selective_refresh->add_partial( 'blogname', array(
'selector' => '.site-title a',
'render_callback' => 'twentyfifteen_customize_partial_blogname',
) );
好きですか
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->add_partial( 'blogname', array(
'selector' => '.site-title a',
'render_callback' => 'twentyfifteen_customize_partial_blogname',
) );
実際にはうまく機能して望みの結果が得られます。しかし私は私のフレームワークとしてKirkiを使っていますが、それができない理由がいくつかあります。私はpostMessageで私自身のjavascript関数を使いたいのですが、デフォルトのセレクティブリフレッシュを使いたくはありません。ここでセレクタータグを実装することはできません。
これが私のコードです:
Kirki::add_field( 'theme_config', array(
'type' => 'text',
'settings' => 'about_us_video_setting',
'label' => __( 'Video Link', 'rst' ),
'section' => 'about_us_section',
'default' => esc_attr__( 'youtube.com', 'rst' ),
'transport' => 'postMessage',
'partial_refresh' => array(
'about_us_video_setting' => array(
'selector' => '#youtube-video',
'render_callback' => 'show_video',
) ),
'active_callback' => array(
array(
'setting' => 'is_front_page',
'operator' => '==',
'value' => true,
),
),
) );
欲しいのは
Kirki::add_field( 'theme_config', array(
'type' => 'text',
'settings' => 'about_us_video_setting',
'label' => __( 'Video Link', 'rst' ),
'section' => 'about_us_section',
'default' => esc_attr__( 'youtube.com', 'rst' ),
'transport' => 'postMessage',
'selector' => '#youtube-video',
'active_callback' => array(
array(
'setting' => 'is_front_page',
'operator' => '==',
'value' => true,
),
),
) );
これは..私がpostMessageとしてtransportを与えたとしても、それがしている私自身のjavascriptを使うのではなく、ただ単にデフォルトの更新であるのです。
( function( $ ) {
// Change the previewed URL to the selected page when changing the page_for_posts.
wp.customize( 'about_us_video_setting', function( setting ) {
setting.bind( function( url ) {
$('.embed-responsive-item').attr('src',url);
});
});
} )( jQuery );
私はドキュメンテーションを見つけられなかったのでちょうど明確にしたいと思う。編集ショートカットを表示するために選択的リフレッシュを使用するのは基準ですか?
__return_false を使用してこれを行う簡単な方法があります。欠点は、パーシャルをチェックしてから "false"を返すため、フルリフレッシュが実行されるため、ダブルリフレッシュが発生することです。 「リアルタイム」プレビューを表示するためだけにJavaScriptを使用している場合、これは問題となります。その場合は、Weston Ruterのソリューションを使用する必要があります。
実際にpostMessageプレビューを使用しておらず、ショートカットを表示するだけの場合は、とにかくフルリフレッシュが必要なので大したことはありません。
Javascriptだけを使っている人のために、これらの部分編集ショートカットが組み込まれていないのは、私にはわかりません。
キルキでは:
'transport' => 'postMessage',
'partial_refresh' => array(
'about_us_video_setting' => array(
'selector' => '#youtube-video',
'render_callback' => '__return_false'
)
)
標準:
$wp_customize->get_setting( 'about_us_video_setting' )->transport = 'postMessage';
$wp_customize->selective_refresh->add_partial( 'about_us_video_setting', array(
'selector' => '#youtube-video',
'render_callback' => '__return_false',
) );
できることは、JavaScriptでwp.customize.selectiveRefresh.Partial
を拡張して、部分更新要求を行うためのAjax呼び出しを行う代わりに、JSベースのライブプレビューを適用するrefresh
動作をオーバーライドするカスタム部分型を作成することです。
ウィジェットサイドバーのメタデータのカスタマイズ plugin、特に sidebar_meta_background_color
部分タイプの例を参照できます。
そのため、このsidebar_meta_background_color
型でパーシャルを登録すると、オーバーライドされたrefresh
メソッドでこのJSサブクラスを使用します。