我创建了一个简单的插件,将预览链接更改到正确的位置,因为它是一个自定义Wordpress安装到现有网站框架中的插件。
使用“preview\\u post\\u link”过滤器,我可以成功地更改链接,表示:
http://www.domain.com/wp-custom.php?p=123456&preview=true
将鼠标悬停在a标签上并检查该标签时,此操作非常有效:
<a class="preview button" href="http://www.domain.com/wp-custom.php?p=123456&preview=true" target="wp-preview" id="post-preview">Preview</a>
右键单击并在新窗口/选项卡中打开,它将正常打开。但单击实际按钮,它无法在地址栏中生成url:
http://www.domain.com/?p=123456&preview=true
不太确定发生了什么或解决方法?我唯一能想到的是,wordpress上可能运行了某种JQuery。预览或#发布预览,这会影响直接单击按钮时的行为。
任何关于如何补救的想法都将不胜感激。非常感谢。
更新以显示修改wordpress预览链接的简单方法:
function custom_change_preview_link($link) {
return preg_replace(\'/\\?/\',\'wp-custom.php?\',$link);
}
add_filter( \'preview_post_link\', \'custom_change_preview_link\' );
add_filter( \'preview_page_link\', \'custom_change_preview_link\' );
SO网友:Marie-Elaine Roy
我发现唯一可行的方法是实现中建议的第二个补丁this trac ticket
我知道这是核心文件中的补丁,但在WP(3.6)的下一个版本中,应该会有更改,所以更新应该不会有任何问题。
编辑注意/免责声明:以下迷你插件是从Daniel Bachhubers的“Edit Flow”GitHub插件和票证上发布的补丁中删除的。它没有经过测试,也没有由回答此问题的人添加
<?php
defined( \'ABSPATH\' ) OR exit;
/** Plugin Name: Fix Preview Link */
add_filter( \'preview_post_link\', \'preview_link_fix\' );
function preview_link_fix( $preview_link )
{
$post = get_post( get_the_ID() );
if (
! is_admin()
OR \'post.php\' != $GLOBALS[\'pagenow\']
)
return $preview_link;
$args = array(
\'p\' => $post->ID
,\'preview\' => \'true\'
);
return add_query_arg( $args, home_url() );
}