При разбиении страницы на страницы с тегом, как можно настроить 2-й и последующие стили страниц?


Я хочу применить разные стили для второй страницы в single.php или сообщениях. Как я могу это сделать?

У меня есть следующий код в single.php, чтобы разделить страницу на две части:

<!--nextpage-->

Если есть другой способ добавить еще одну "вкладку" для публикации или тому подобное, я благодарен за любую помощь… Я просто хочу добавить "пользовательскую страницу" в свой пост – например, галерею для публикации – чтобы URL-адрес мог быть таким:

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

Код в 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();?>
Author: Andy Macaulay-Brook, 2016-07-27

3 answers

WordPress уже добавляет классы в тело, чтобы вы могли справиться с этим, если ваша тема правильно использует тег шаблона body_class.

На 2-й странице страницы у вашего тела будут эти дополнительные занятия: paged, paged-2 & page-paged-2, таким образом, вы можете видеть, что вы можете вносить изменения в стили в соответствии с:

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

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

Ядро достигает этого с помощью этой логики:

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

Вы могли бы адаптировать эту логику в своих шаблонах, если бы хотели использовать другой HTML в первом и последующем страницы.

 1
Author: Andy Macaulay-Brook, 2016-07-27 14:34:40

Если вы знаете идентификатор записи, вы можете настроить таргетинг на это конкретное тело с помощью пользовательского CSS. Например, если ваша пользовательская страница имеет идентификатор 99, вы можете настроить пользовательскую таблицу стилей и добавить ко всем селекторам префикс:

Тело.почтовый индекс-99

Очевидно, что это зависит от вашей темы. Если ваша тема использует другой класс в теге body (не .postid-99), вам придется соответствующим образом изменить селектор.

...или...

Поставьте в очередь нужную таблицу стилей в функциях вашей темы. например:-

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

Я не проверял приведенный выше код, но, надеюсь, он поможет вам добраться туда, где вам нужно быть.

 0
Author: Michae Pavlos Michael, 2016-07-27 13:00:54

Если я правильно понимаю, вы хотите создать другой шаблон для новой страницы.

Если это так, вам нужно скопировать single.php вашей темы (предпочтительно в дочерней теме) и используйте иерархию шаблонов , чтобы переопределить значение по умолчанию single.php с новым.

  1. Получите идентификатор страницы, которую вы хотите сделать
  2. Дублировать файл single.php и переименовать в single-ID.php, меняя "идентификатор" на идентификатор страницы
  3. Теперь вы можете редактировать single-ID.php и изменения будут применяться только к этой странице.

Если вы хотите применить более чем к одной странице, вы можете создать новый шаблон и добавить к нему имя. Затем вы бы выбрали его на странице редактирования на всех страницах, которые вы хотите, вместо того, чтобы делать это по идентификатору. Это будет зависеть от темы, которую вы используете.

 0
Author: lfreitas, 2016-07-27 20:29:19