Если (is_page_template ()) не работает в header.php - PullRequest
0 голосов
/ 24 октября 2019

У меня есть 3 отдельных варианта заголовка, все с изображением баннера: 1. Домашняя страница 2. Шаблон спонсора 3. Все остальные страницы.

Я поместил приведенный ниже код в заголовок. Домашняя страница и все остальные страницы работают должным образом, но я не могу заставить шаблон Спонсора работать (class = "sponsor-title" не появляется).

<?php if ( has_post_thumbnail()) : ?>
    <?php the_post_thumbnail(); ?>
<?php endif; ?>
<?php if ( is_front_page()): ?>
    <span class="home"><h1><?php echo event_title(); ?></h1></span>
    <span class="tag-line"><?php the_field('tag_line'); ?></span>
    <span class="date"><?php the_field('date_time_header'); ?></span>
    <?php 
        $ticket = get_field('ticket_url');
        if ( $ticket ): 
            $ticket_url = $ticket['url'];
            $ticket_title = $ticket['title'];
        ?>
        <a class="button" href="<?php echo esc_url($ticket_url); ?>"><?php echo esc_html($ticket_title); ?></a>
<?php if (!is_page_template('page-templates/all-sponsor-template.php')); ?>
    <span class="sponsor-title"><h1><?php echo event_title(); ?></h1></span>
<?php endif; ?>
<?php else: ?>
    <span class="page-title"><h1><?php the_field('page_header'); ?></h1></span>
    <span class="sub-header"><?php the_field('sub_header'); ?></span>
<?php endif;?> 

Что я сделалнеправильно? Я хочу убедиться, что при выборе шаблона или страницы отображается правильный стиль, поскольку он сильно отличается от других страниц.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Ваша проблема в синтаксисе вашего оператора if. Попробуйте вместо этого:

<?php if (!is_page_template('page-templates/all-sponsor-template.php')) { ?>
<span class="sponsor-title"><h1><?php echo event_title(); ?></h1></span>
<?php } else { ?>
<span class="page-title"><h1><?php the_field('page_header'); ?></h1></span>
<span class="sub-header"><?php the_field('sub_header'); ?></span>
<?php } ?>

Я всегда использую скобки {..}, так как легче следовать и понимать логику кода. Однако, чтобы переписать ваш код, используя правильную структуру оператора if, который вы пытались, он будет выглядеть так:

<?php if (!is_page_template('page-templates/all-sponsor-template.php')): ?>
<span class="sponsor-title"><h1><?php echo event_title(); ?></h1></span>
<?php else: ?>
<span class="page-title"><h1><?php the_field('page_header'); ?></h1></span>
<span class="sub-header"><?php the_field('sub_header'); ?></span>
<?php endif; ?>

И, конечно, восклицательный знак здесь:

if (!is_page_template('page-templates/all-sponsor-template.php'))

означает «Если НЕ шаблон страницы all-спонсор-template.php», поэтому удалите его, если вы проверяете на ИСТИНА.

Наконец, имейте в виду, что из-за определенных глобальных переменных во времяЦикл, is_page_template() не будет работать в Цикле. Однако, если этот код находится в вашем header.php, то с вами все будет в порядке.

0 голосов
/ 24 октября 2019
<?php if (!is_page_template('page-templates/all-sponsor-template.php')); ?>
    // Stuff
<?php endif; ?>

Здесь вы проверяете, является ли шаблон страницы НЕ page-templates/all-sponsor-template.php, а если нет - тогда вы показываете название спонсора ...

Я могу быть смущен, но не должен 'неужели это так?

<?php if (is_page_template('page-templates/all-sponsor-template.php')); ?>
    // Stuff
<?php endif; ?>

Т.е. поменять условие if так, чтобы заголовок спонсора показывал, является ли шаблон страницы упомянутым файлом.

Редактировать: TheОператор if, который проверяет, используется ли шаблон страницы спонсора, находится внутри оператора if, который проверяет, является ли текущая страница домашней страницей.

Если вы перемещаете шаблон, проверьте на один уровень вверх, это должно сработать:

<?php if ( has_post_thumbnail()) : ?>
    <?php the_post_thumbnail(); ?>
<?php endif; ?>

<?php if ( is_front_page()): ?>
    <span class="home"><h1><?php echo event_title(); ?></h1></span>
    <span class="tag-line"><?php the_field('tag_line'); ?></span>
    <span class="date"><?php the_field('date_time_header'); ?></span>

    <?php 
    $ticket = get_field('ticket_url');
    if ( $ticket ): 
    $ticket_url = $ticket['url'];
    $ticket_title = $ticket['title'];
    ?>
    <a class="button" href="<?php echo esc_url($ticket_url); ?>"><?php echo esc_html($ticket_title); ?></a>
<?php endif; ?>

<?php if (is_page_template('page-templates/all-sponsor-template.php')); ?>
    <span class="sponsor-title"><h1><?php echo event_title(); ?></h1></span>
<?php endif; ?>

<?php else: ?>
    <span class="page-title"><h1><?php the_field('page_header'); ?></h1></span>
    <span class="sub-header"><?php the_field('sub_header'); ?></span>
<?php endif;?> 

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...