if в файле sidebar.php, проверяющий идентификатор страницы или шаблон или заголовок

У меня есть следующий код в файле sidebar.php:

<ul class="list-posts"> <?php $lastposts = get_posts('numberposts=5&orderby=date&cat=-52'); foreach($lastposts as $post) : setup_postdata($post); $page_name = $wp_query->post->post_name; if (is_page_template('news-page.php')) { ?> <p>yes!</p> <?php } else { ?> <li<?php if ( $post->ID == $wp_query->post->ID ) { echo ' class="current"'; } else {} ?>> <a href="<?php the_permalink() ?>"><?php the_title(); ?></a> </li> <?php } ?> <?php endforeach; ?> </ul> 

Цель состоит в том, что если боковая панель появляется на любой странице, кроме шаблона news-page.php , она выполняет код, перечисляющий все записи в категории. Если нет, он печатает <p>yes!</p> (этот код изменится – это просто заполнитель atm).

Честно говоря, я не женат на is_page_template , но я пробовал is_page , the_title и wp_title , ни один из которых не выводит <p>yes</p> .

Неужели я ошибаюсь? Разве это не работает, потому что он ищет шаблон страницы в sidebar.php?

Я довольно новичок в WP, поэтому конкретные советы очень ценятся! MTIA.


РЕДАКТИРОВАТЬ:

Хорошо, это действительно странно. Я добавил 'get_page_template' в свой код, чтобы я мог точно определить, какой шаблон он использует, и он не использует news-page.php, хотя я указал это в области администратора.

Я создал новую страницу и также использовал news-page.php в качестве шаблона. Опять же, когда я просматриваю страницу, он не использует news-page.php в качестве шаблона.

В обоих этих случаях используется шаблон «todaysmenu-page.php». Я проверил в обоих файлах, что указано правильное имя шаблона. Они есть:

 <?php /* Template Name: Todays menu page */ ?> 

а также

 <?php /* Template Name: News page */ ?> 

Я что-то пропустил? Нужно ли мне очищать дБ или что-то еще?


EDIT №. 2:

Таким образом, страница определенно использует news-page.php, однако sidebar.php все еще выводит, что используемым шаблоном является todaysmenu-page.php.

Итак, почему черт не is_page_template выплескивает правильный шаблон?


EDIT №. 3:

Ответ: Я поставил query_posts в неправильное место. Не работает код:

 <?php get_header(); ?> <?php query_posts('cat=4'); if (have_posts()) : while (have_posts()) : the_post(); ?> <div id="content-wrap"> <div id="side-column"><?php get_sidebar(); ?></div> <div id="content-column"> <h2>News</h2> <article> <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3> <div class="entry-content"> <?php the_excerpt(); ?> <?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?> </div> </article> <?php endwhile; endif; ?> </div><!--content column--> </div><!--content wrap--> <?php get_footer(); ?> 

Рабочий код:

 <?php get_header(); ?> <div id="content-wrap"> <div id="side-column"><?php get_sidebar(); ?></div> <div id="content-column"> <h2>News</h2> <?php query_posts('cat=4'); if (have_posts()) : while (have_posts()) : the_post(); ?> <article> <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3> <div class="entry-content"> <?php the_excerpt(); ?> <?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?> </div> </article> <?php endwhile; endif; ?> </div><!--content column--> </div><!--content wrap--> <?php get_footer(); ?> 

Спасибо всем за ваши предложения и комментарии!

Solutions Collecting From Web of "if в файле sidebar.php, проверяющий идентификатор страницы или шаблон или заголовок"

Упростите свой код для теста

 if (is_page_template('news-page.php')) { ?> <p>yes!</p> <?php } else { ?> <p>not 'news-page.php'</p> <?php } 

Две вещи для проверки:

  1. Шаблон страницы на самом деле называется page-news.php .
  2. На текущей странице на самом деле установлен шаблон page-next.php .

У вас есть прямая ссылка?

РЕДАКТИРОВАТЬ

Хорошо, поэтому по какой-то причине страница использует файл шаблона todaysmenu-page.php . Это странно.

Что произойдет, если вы переименуете todaysmenu-page.php как todaysmenu-page.php.old ? Какой шаблонный файл использует страница?

Хорошо, получается, что код query_posts в news-page.php оказался не в том месте. См. Мой обновленный вопрос (Редактировать № 3).