Bonjour,
Je développe un site sous wordpress et je souhaite savoir si il est possible d'afficher les articles dans une autre page que single .php.
C'est à dire une page avec un design différent.
merci

5 réponses


Alexandre
Réponse acceptée

Salut,

Tu peux faire simple, dans le single.php, tu mets des conditions, par exemple si l'article est dans la catégorie photos, on lui dit d'afficher le template single-photo.php. En gros, tu dupliques single.php du theme, tu le nomes single-default.php et dans le single.php, tu vires tout et tu mets les conditions.

Exemple basé sur les categories :

    if ( in_category('1') ) { 
        include(TEMPLATEPATH . '/single-article.php');
    } elseif ( in_category('2') ) {
        include(TEMPLATEPATH . '/single-photo.php');
    }
    else { 
        include(TEMPLATEPATH . '/single-default.php'); 
    }

Après, tu peux faire quelque chose de mieux, on peut imaginer ajouter un metabox type select avec une liste de template : simple, full page... du coup quand tu ajoutes un article, tu sélectionnes le template que tu veux pour l'article en question...

Alex

En fait je m'apperçois qu'il faut que je passe par les custom posts type, et pour cela j'ai suivis tes tutos par contre ce que je n'arrive pas à faire c'est de les afficher dans ma page accueil.
Voici le code de mon custom post type function :

<?php 
add_action( 'init', 'register_activites' );

function register_activites() {
    $labels = array(
        'name'               => 'Activité',
        'singular_name'      => 'Dernières Activité',
        'menu_name'          => 'Activité',
        'name_admin_bar'     => 'Activité',
        'add_new'            => 'Ajouter une Activité',
        'add_new_item'       => 'Ajouter une nouvelle Activité',
        'new_item'           => 'Nouvelle Activité',
        'edit_item'          => 'Editer une Activité',
        'view_item'          => 'Voir une Activité',
        'all_items'          => 'Toute les Activités',
        'search_items'       => 'Rechercher une Activité',
        'parent_item_colon'  => '',
        'not_found'          => '',
        'not_found_in_trash' => ''
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'activités' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail','custom-fields')
    );

register_post_type( 'activites', $args );

// Add new taxonomy, make it hierarchical (like categories)
    $labels = array(
        'name'              => 'Catégories',
        'singular_name'     => 'Catégorie',
        'search_items'      => 'rechercher une catégorie',
        'all_items'         => 'Tous les catégories',
        'parent_item'       => 'Catégorie parente',
        'parent_item_colon' => 'Catégorie parente:',
        'edit_item'         => 'Editer une catégories',
        'update_item'       => 'Mettre à jour une catégorie',
        'add_new_item'      => 'Ajouter une catégorie',
        'new_item_name'     => 'Nouvelle catégotie',
        'menu_name'         => 'Catégorie',
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'categories' ),
    );

    register_taxonomy( 'categorie', array( 'activites' ), $args );

}
?>

et mon code pour les afficher dans ma page accueil :

<?php  
                $type = 'activites';
                $args = array (
                 'post_type' => $type,
                 'post_status' => 'publish',
                 'paged' => $paged,
                 'showposts' => 6,
                );
                $wp_query = null;
                $wp_query = new WP_Query($args); 
                if ( $wp_query->have_posts() ) :
                    while ( $wp_query->have_posts() ) : $wp_query->the_post();
                ?>

            <div class="post-offre">

                <?php the_post_thumbnail('vignettes-posts'); ?>
                <p>Posté le <span><?php the_time('d F Y'); ?></span> Catégorie <span><?php echo get_the_category_list(', ') ?></span></p>
                <h3><?php the_title(); ?></h3>
                <?php the_content(); ?>
                <a class="more" href="<?php the_permalink(); ?>">Plus d'infos...</a>

            </div>
                <?php endif; wp_reset_postdata(); ?>
                <?php endwhile; ?>

depuis que j'ai mis ce code ma page est blanche !!!
Je ne comprends pas
merci

Regarde tes logs tu dois avoir une erreur quelque part. Si tu as une page blanche c'est que tu as une erreur

Qu'entends tu par logs?