我找到了一个很好的方法preview_post_link
过滤器,允许您重写预览操作使用的URL。就我而言,我做了如下事情:
add_filter( \'preview_post_link\', function ( $link ) {
return \'http://domain.com/mobile-preview/?src=\' . urlencode($link) . \'%26admin_bar=false\';
} );
当我单击预览按钮时,WordPress会打开我的自定义URL。简单,无需JavaScript-WordPress再次辉煌!
如果有人需要使用JS,您可以尝试以下方法:
(function ($) {
$(document).ready(function () {
// Create URL for post preview
var previewUrl = $(\'#preview-action\').find(\'.preview\').attr(\'href\');
var parser = document.createElement(\'a\');
parser.href = previewUrl;
var postId = $(\'#post_ID\').val();
mobilePreviewUrl = parser.protocol + \'//\' + parser.host + \'?p=\' + postId;
var href = mobilePreviewUrl ? \'http://domain.com/mobile-preview/?src=\' + encodeURIComponent(mobilePreviewUrl) + \'%26preview=true\' : \'\';
// Preview buttons
var mobilePreviewBtn = $(\'<a/>\').addClass(\'preview button\').attr({
\'id\' : \'mobile-preview\',
\'href\' : href,
\'target\': \'_new\'
}).text(\'Preview Mobile\');
$(\'#preview-action\').prepend(mobilePreviewBtn);
$(\'#post-preview\').hide();
mobilePreviewBtn.on(\'click\', function(e){
e.preventDefault();
$(window).off( \'beforeunload.edit-post\' );
wp.autosave.server.tempBlockSave();
$(\'form#post\').submit();
window.open(href, \'mobilePreview\');
});
}); // end document ready
})(jQuery);
这将从默认预览按钮的
href
属性,并将其用作新自定义移动预览按钮的href。我的移动预览页面是在异地托管的-当用户单击自定义预览按钮时,我们将通过一个名为
src
. 预览页面在移动大小的iframe中显示URL。
自定义预览按钮的单击处理程序关闭beforeunload.edit-post
事件处理程序停止默认“是否确实要离开此页?”确认在提交后期编辑表单时弹出。下一行调用WordPress在单击预览按钮时通常使用的autosave JS方法。这会将草稿当前保存在帖子编辑器中。下一行提交保存在编辑器中的帖子,最后一行打开一个带有自定义预览URL的新窗口。