Intereting Posts
Список боковых панелей на странице Wordlock clone metabox не работает Автоматически сгенерированная довольно постоянная ссылка, не использующая название с версии 4.4 WP_Query возвращается пустым, если meta_query имеет более 7 значений Детские страницы не становятся подменю (как в тесте двадцать десять)? Как правильно экспортировать / импортировать базу данных WordPress (MySQL) через командную строку? Установка условного фонового изображения из метазначения Вызов функции-члена get_row () для не-объекта, Невозможно использовать глобальный $ wbdp внутри плагина Предоставление посетителям доступа к странице с защитой паролем через внешний скрипт Извлечение персидского предложения из многоязыковой строки в wordpress theme Отключить некоторые функции в Admin Проблема при вставке строки в таблицу пользовательских баз данных Объект TInyMCE Тег разделен Как правильно переводить пользовательские сообщения, переписывает URL? Неопределенная переменная: строка?

Использование условного тега для баннера главной страницы

Я настраиваю свой веб-сайт wordpress на своем сервере сейчас и имею вращающиеся изображения на домашней странице, и это красиво, но теперь я хочу иметь условный тег, говорящий wordpress, если на домашней странице не используются цветные изображения на каждую страницу.

Это код, который я разместил на своей домашней странице, чтобы отображать мои плавающие вращающиеся баннеры с iThemes.com

<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('banner-widget')) : else : ?> <p><img class="banner" src="<?php bloginfo('template_directory') ?>/img/BANNER1-averylawoffice.jpg" alt="Banner 1"></p> <?php endif; ?> 

Он отлично работает! Мой виджет готов пойти на это, изображения все там, и он работает. Теперь у меня есть этот код, который я хочу поместить в оператор if else, поэтому, если страница НЕ является домашней страницей, покажите отображаемое изображение.

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

 <?php if (is_home()) { <?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('banner-widget')) : else : ?> <p><img class="banner" src="<?php bloginfo('template_directory') ?>/img/banner.jpg" alt="Banner 1"></p> <?php endif; ?> } else { ?> <div id="banner"><?php the_post_thumbnail( 863, 328 );?></div> <?php } ?> 

Что я делаю неправильно, это чтобы не получить желаемый эффект, который я ищу? Я знаю, что это просто, поэтому я не хочу использовать бесполезный плагин для этого и замедлять работу сайта, поскольку он будет медленным, как есть.

Любая помощь или предложения были бы замечательными!

Есть несколько проблем, которые, я думаю, вы хотите настроить:

  1. Вы открываете дополнительный тег PHP перед вторым оператором if . Этого не должно быть.
  2. Убедитесь, что is_home() – это то, что вы хотите. Если у вас есть статическая передняя страница (установленная в Настройках> Чтение), тогда вы действительно хотите is_front_page() . Подумайте о is_home() как is_blog() (чтобы быть ясным, is_blog() не существует).
  3. Если вы хотите дать the_post_thumbnail() ширину и высоту, она должна быть в массиве. Другой вариант – определить размер изображения в функции.php, а затем вызвать его там.
  4. Я думаю, что ваш HTML-код может быть чище, просто заверяя баннер в div #banner.
  5. Чтобы быть уверенным, что у вас всегда есть образ, я бы поставил перед собой задачу убедиться, что у вас установлен миниатюрный столбец и убедитесь, что у вас есть резерв.

Со всеми этими предложениями, заключенными в код, вот что я предлагаю:

В your functions.php добавьте:

 add_image_size( 'banner', 863, 328, true ); 

И где бы ни был ваш фрагмент вашего баннера:

 <!-- Let's always wrap our banner in the banner div for easy styling --> <div id="banner"> <?php // Check to see if we're on a non-home-page and if the non-home-page has a featured image. use is_front_page() if that's desired if( !is_home() && has_post_thumbnail() ) { get_the_post_thumbnail( 'banner' ); // if we're on the home page OR don't have a featured image but DO have a dynamic sidebar } elseif ( function_exists('dynamic_sidebar') && is_dynamic_sidebar('banner-widget') ) { dynamic_sidebar('banner-widget'); // no featured image or on homepage with no sidebar, spit out a static image } else { echo '<img class="banner" src="' . get_template_directory_uri() . '/img/banner.jpg" alt="Banner 1">'; } ?> 

ОБНОВИТЬ:

Это окончательное высказывание echo ранее было полным беспорядком. Сожалею! Я очистил его, и я думаю, что теперь он должен работать. Я также воспользовался функцией bloginfo() (которая теперь устарела) с новой предпочтительной эквивалентной функцией.

Возможно, вы захотите попробовать is_front_page() вместо is_home() . is_home() возвращает true, когда ваши последние сообщения отображаются на вашей домашней странице; is_front_page() возвращает true, если вы установили его как статическую страницу в настройках> Чтение.

См. Эту статью для получения дополнительной информации: http://codex.wordpress.org/Conditional_Tags#The_Conditions_For_

Надеюсь это поможет!

Если код в вопросе точно такой же, как в вашей теме, единственной реальной проблемой, которую я вижу, является синтаксическая ошибка PHP:

 <?php if (is_home()) { <?php 

Вы открываете тег PHP, когда у вас уже есть открытый тег PHP.

Попробуйте удалить второй тег PHP.