web-dev-qa-db-fra.com

Afficher la page d'accueil en mode aperçu

Existe-t-il un moyen d'afficher votre page d'accueil dans un mode d'aperçu afin que je puisse vérifier à quoi ressemblent mes messages sur la page d'accueil avant de les publier (c'est-à-dire, pour vous assurer que l'image présentée est correcte, etc.).

7
Matt Whetton

Je pense que vous pouvez définir votre message sur private pour l'afficher en privé sur la page d'accueil.

Une fois que vous avez défini la visibilité sur privée, le statut de la publication ou de la page devient "Publication privée", comme indiqué. Les publications privées sont automatiquement publiées mais ne sont visibles que par les personnes disposant des niveaux d'autorisation appropriés (éditeur ou administrateur).

Voir ici .


Voici une idée pour afficher les articles draft sur le site:

Réutilisons le paramètre preview pour ajouter les articles draft à la page en cours, par exemple:

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

Nous modifions ensuite toutes les requêtes frontales, pour les utilisateurs connectés, avec:

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;
});

mais nous pourrions utiliser is_main_query() pour limiter les modifications à la requête principale.

ps: cela pourrait nécessiter des tests ou des ajustements ... mais vous avez l'idée ;-)

6
birgire