问题描述

是否有任何方式在预览模式下查看您的主页,以便我们可以在发布之前检查我的帖子在主页上的显示方式 (即确保功能图像正确等等) 。

最佳解决方案

我想你可以将您的帖子设置为 private,以便在主页上私下查看。

Once you change the visibility to private, the post or page status changes to “Privately Published” as shown. Private posts are automatically published but not visible to anyone but those with the appropriate permission levels (Editor or Administrator).

here


这是一个想法,在网站上查看 draft 的帖子:

我们重新使用 preview 参数将 draft 帖子添加到当前页面视图中,例如:

- example.com/?preview=true
- example.com/2014/01/?preview=true

然后,我们修改所有前端查询,对于登录用户,使用:

add_filter( 'posts_where', function( $where ){
   if( ! is_admin() 
       && is_user_logged_in() 
       && 'true' === get_query_var( 'preview' ) 
       && ! is_singular() )
   {
        global $wpdb;
        $from = sprintf( "%s.post_status = 'publish'", $wpdb->posts ) ;
        if( current_user_can( 'edit_others_posts' ) )
        {
            // add drafts from all users:
            $to = sprintf( "%s.post_status IN ( 'publish', 'draft' ) ", $wpdb->posts ) ;
        }
        else
        {
            // add drafts from current user:
            $sql = " ( %s.post_status = 'publish' 
                       OR ( %s.post_status = 'draft'  AND %s.post_author = %d ) ) ";
            $to = sprintf( $sql, 
                           $wpdb->posts, 
                           $wpdb->posts, 
                           $wpdb->posts, 
                           get_current_user_id() 
                  );
        }
        $where  = str_ireplace( $from, $to, $where );       
   }
   return $where;
});

但是我们可以使用 is_main_query()限制对主查询的修改。

ps:这可能需要一些测试或调整… 但你得到的想法;-)

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。