草稿或待处理帖子的 WordPress 预览 URL


Wordpress preview URL of Draft or pending post

>我对预览链接有问题,该链接是为帖子状态为"草稿"的帖子生成的。我想"待定"是一样的。有一个永久结构定义如下:

add_permastruct('post-type-name', '/page-name/%post-type-name%', array(
    'with_front' => false,
    'walk_dirs' => false
));

当我单击帖子状态为"已发布"的帖子的预览时,它会重定向到 http://domain-name.dev/wordpress/page-name/post-type-name/。没关系。

当我单击帖子状态为"草稿"的帖子的预览时,它会重定向到 http://domain-name.dev/wordpress/?p=12345&post_type=post-type-name&preview_id=12345&preview=true&preview_nonce=123nonce45。不应用永久结构。

WordPress版本4。安装在名为"wordpress"的子目录中。

htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index'.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress

有什么想法吗?

还在根文件夹中使用全新的WP 4安装进行了测试,没有任何插件或自定义帖子类型。完全一样。

谢谢你帮助我。来自柏林的欢呼声克里斯托夫

那些仍然有这个问题的人。

我有这个问题,但它是由我的自定义rewrite_rule得出的。我已经通过修改get_preview_post_link参数解决了它

add_filter( 'preview_post_link', 'custom_preview_post_link', 10, 2 );
function custom_preview_post_link( $link, 'WP_Post $post )
{
//    if ($post->post_status != 'publish') {
         return remove_query_arg( 'preview_id', $link );
//    }
};

注意:我在函数 alter_normal_post_link() 中添加了一个条件来检查 post_status != 'publish',它将在此处调用 add_filter('post_link', 'alter_normal_post_link', 10, 3);

这可能无法回答您的问题,而只是给您一个想法。