Intereting Posts
Восстановление пароля на странице get_category_parents отображает пустую категорию Добавление json в качестве параметров для короткого кода Перенаправление не www на www ТОЛЬКО для домена, субдомена без www Поле Post Excerpt отображается только для администратора по умолчанию Плагин, чтобы получить результат на основе формы. Перенос статического сайта в многоуровневый с несколькими доменами и субдоменами Получить последние сообщения по дате в Multisite Обновление post_parent по id (много раз) Добавить стиль визуального редактора только на странице widgets.php Как вернуть строку с переменной внутри в коротком коде? Запретить смену divi в текущем меню Возможно ли заменить ссылку на RSS-страницу поисковой страницы в WordPress? Как получить выпадающее меню шаблона в атрибутах страницы пользовательского типа сообщений? Я получаю 0 после результата моих запросов ajax

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(); ?> 

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

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

 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).