我要试一试。。。假设您有一个主题选项themeoption[id]
... 而不是设置传输refresh
, 将其设置为postMessage
相反,然后添加此代码以创建回调,该回调首先通过AJAX获取页面URL,然后将其发送回previewUrl
正如您在刷新之前提到的。。。
add_action(\'customize_preview_init,\'preview_override_loader\');
function preview_override_loader() {
add_action(\'wp_footer\',\'preview_override_script\');
function preview_override_script() {
$adminajax = admin_url(\'admin-ajax.php\');
echo "wp.customize(\'themeoption[id]\',function(value) {
value.bind(function(to) {
console.log(\'Posted ID: \'+to); /* debug point */
jQuery.get({url:\'".$adminajax.php"\',
{action:\'get_preview_permalink\',postid:to},
function(data) {
if (data) {
console.log(\'Permalink: \'+data); /* debug point */
wp.customize.previewer.previewUrl(data);
wp.customize.previewer.refresh();
}
}
});
});
});"
}
}
然后只需添加一个小的AJAX函数来返回永久链接。。。这在某种程度上是假设下拉控件正在保存/发布单个数字post ID。
add_action(\'wp_ajax_get_preview_permalink\',\'get_preview_permalink\');
function get_preview_permalink() {
$postid = $_GET[\'postid\'];
echo get_permalink($postid);
exit;
}
未经测试的疯狂解决方案,但似乎可以解决问题。。?