web-dev-qa-db-fra.com

Lors de la pagination d'une page avec la balise <! - nextpage ->, comment personnaliser le deuxième style de page et les styles suivants?

Je souhaite appliquer différents styles pour un deuxième page in single.php ou des publications. Comment puis-je faire ceci?

J'ai le code suivant dans single.php pour diviser la page en deux parties:

<!--nextpage-->

S'il existe une méthode différente pour ajouter un autre "onglet" à poster ou similaire, je suis reconnaissant pour toute aide… Je veux juste ajouter une "page personnalisée" à mon message - comme une galerie pour un message - afin que l'URL puisse être comme ça:

http://localhost/mysite/1024/postname/gallery/
http://localhost/mysite/1024/postname/custom-page/

Code en single.php:

    <?php get_header();?>
 <main>
<?php get_sidebar() ?>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <div id="post">

            <div class="top-single-movie">

            <div class="info">  
            <h3 class="title" id="post-<?php the_ID(); ?>">
            <a href="<?php the_permalink() ?>" rel="bookmark">
            <?php the_title(); ?></a>
            <?php if( get_field('date') ): ?>
             ( <?php the_field('date'); ?> )
            <?php endif; ?> 
            </h3>
            </div>


            <?php if(has_post_thumbnail()) :
            the_post_thumbnail('medium');
            else : 
            echo '<img src="'.get_bloginfo('template_directory').'/img/default.png">';
            endif;
            ?>

            </div><!-- End. top-single-movie -->


            <?php the_content(); ?>

            <?php 
    wp_link_pages( array(
        'before' => '<div class="page-link"><span>' . __( 'Pages:', 'tl_back' ) . '</span>',
        'after' => '</div>'
    ) ); 
?>

            <?php include (TEMPLATEPATH . '/php/single/tv-single-Rand.php'); ?>


            </div><!-- End. content-single-movie -->


            <p class="tags"><?php the_tags(); ?> </p> 



            <!--?php comments_template(); // Get comments.php template ?-->


            <?php endwhile; else: ?>
            <p> <?php _e('Sorry, no posts matched your criteria.'); ?> </p>
            <?php endif; ?>
            <!-- END Loop -->


            <ul class="navigationarrows"> 
            <li class="previous">
            <?php previous_post_link('&laquo; %link'); ?>
            <?php if(!get_adjacent_post(false, '', true)) 
            { echo '<span>&laquo;Previous</span>'; } ?>
            </li>
            <li class="next">
            <?php next_post_link('%link &raquo;'); ?>
            <?php if(!get_adjacent_post(false, '', false)) { echo '<span>Next post:</span>'; } ?> 
            </li>
            </ul><!-- end . navigationarrows --> 

    </div>

 </main>
<?php get_footer();?>
2
alam7o

WordPress ajoute déjà des classes au corps pour que vous puissiez gérer cela, à condition que votre thème utilise correctement la balise de modèle body_class.

Sur la 2ème page de la page, votre corps comportera les classes supplémentaires suivantes: paged, paged-2 & page-paged-2, afin que vous puissiez voir que vous pouvez modifier les styles en fonction de:

body.page {
    background: black;
    color: white;
}

body.paged {
    background: green;
    color: red;
}

Core y parvient avec cette logique:

global $wp_query;

$page = $wp_query->get( 'page' );

    if ( ! $page || $page < 2 )
        $page = $wp_query->get( 'paged' );

    if ( $page && $page > 1 && ! is_404() ) {
        $classes[] = 'paged-' . $page;

        if ( is_single() )
            $classes[] = 'single-paged-' . $page;
        elseif ( is_page() )
            $classes[] = 'page-paged-' . $page;
        elseif ( is_category() )
            $classes[] = 'category-paged-' . $page;
        elseif ( is_tag() )
            $classes[] = 'tag-paged-' . $page;
        elseif ( is_date() )
            $classes[] = 'date-paged-' . $page;
        elseif ( is_author() )
            $classes[] = 'author-paged-' . $page;
        elseif ( is_search() )
            $classes[] = 'search-paged-' . $page;
        elseif ( is_post_type_archive() )
            $classes[] = 'post-type-paged-' . $page;
}

Vous pouvez adapter cette logique à vos modèles si vous souhaitez utiliser un code HTML différent sur les premières pages et les suivantes.

0
Andy Macaulay-Brook

Si vous connaissez l'ID de l'article, vous pouvez cibler ce corps spécifique avec du CSS personnalisé. Par exemple, si votre page personnalisée a un identifiant de 99, vous pouvez configurer une feuille de style personnalisée et préfixer tous les sélecteurs avec:

body.postid-99

Évidemment, cela dépend de votre thème. Si votre thème utilise une classe différente dans la balise body (pas .postid-99), vous devrez changer le sélecteur en conséquence.

...ou...

Mettez la bonne feuille de style dans vos fonctions de thème. par exemple:-

function my_enqueue_scripts(){
    wp_register_style( 'my-css', "my-stylesheet.css" );
    wp_enqueue_style( 'my-css' );
}

if ( get_the_ID() == 99 )
    add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts');

Je n'ai pas vérifié le code ci-dessus, mais j'espère que cela vous aidera à atteindre vos objectifs.

0

Si je comprends bien, vous voulez créer un modèle différent pour une nouvelle page.

Si tel est le cas, vous devez dupliquer le single.php de votre thème (de préférence dans un thème enfant) et utiliser le Template Hierarchy pour remplacer le single single.php par le nouveau.

  1. Obtenir l'ID de la page que vous voulez faire
  2. Dupliquez le fichier single.php et renommez-le avec single-ID.php, en changeant "ID" avec l'identifiant de la page
  3. Vous pouvez maintenant éditer le single-ID.php et les modifications ne s'appliqueront qu'à cette page.

Si vous souhaitez appliquer à plusieurs pages, vous pouvez créer un nouveau modèle et lui attribuer un nom. Ensuite, vous le sélectionneriez dans la page de modification dans toutes les pages souhaitées, au lieu de le faire par identifiant. Cela dépend du thème que vous utilisez.

0
lfreitas