• Здравствуйте. Подскажите, пожалуйста, возможна ли подгрузка части кода в файле functions.php при определенных условиях. В моем случае нужно, чтобы эта часть кода подгружалась только при переходе на главную страницу. Сам код находится в отдельном файле, а в functions.php он выводится так: require( get_template_directory() . '/slide.php' );
    пробовал так:

    if( is_front_page() ){
    require( get_template_directory() . '/slide.php
    }

    не получается, не выводится совсем. Похоже здесь нужен фильтр или хак.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • только при переходе на главную страницу.

    Главная страница бывает разной (смотрите иерархию шаблонов), может быть статичной, может быть лентой постов..

    Сам код находится в отдельном файле, а в functions.php он выводится так:

    В вашем случае он подключается, functions.php ничего не выводит, он «подготавливает почву» для вывода в шаблонах.
    Если есть шаблон front-page.php и в настройках выбрана статическая страница, то пропишите прямо в нем, без всяких functions.php и условий.
    Если используется универсальный шаблон, например index.php, то так и пишите.

    if ( is_front_page() ) {
        get_template_part( 'slide' );
    }

    Но, если есть шаблон page.php, то код отработает в нём..
    Короче, изучайте иерархию! 🙂

    UPD Оставлю еще одну полезную ссылку http://codex.wordpress.org/Conditional_Tags

    Спасибо, wikicms. Уже не раз здесь на форуме получал от Вас ответы на свои вопросы.
    В данном случае я не указал свою конечную цель. Сам вывод слайдера только на главной странице (у меня универсальный шаблон — index.php) не проблема. Если даже удалить код вывода слайдера в header.php, то на всех страницах блога подгружаются java скрипты и еще куча кода, связанного с этим слайдером. Я хотел сделать так, чтобы если слайдер выводится на главной, то и файлы скриптов и другой код, необходимый для его работы, грузились только на ней. Поэтому я пытаюсь это решить на уровне functions.php. Наверное мой вопрос правильнее будет выглядеть так:
    Как сделать так, чтобы код в functions.php, который обеспечивает работу слайдера был активен только для главной страницы? Не знаю, возможно вопрос абсурдный.
    Когда код стоял непосредственно в functions.php, я, с моими знаниями, не видел никакой возможности сделать то, что хочу. Поэтому я вынес код в отдельный файл (на одну строку кода смотреть не так «страшно»)))) и пытался обеспечить его загрузку в functions.php только при переходе на главную страницу.

    У меня сложилось впечатление, что вы сами немного запутались или не всё рассказываете. К сожалению, я не особый фантазёр, поэтому сложно понять о какой красоте идет речь не глядя на неё 🙂

    Вам надо понять как работают шаблоны в WordPress. Что ж, проведу миниликбез.

    Когда вы набрали в адресной строке некий УРЛ, движок немного «разбирает» его, и когда дело доходит до темы оформления, то первым загружается файл functions.php (если есть Дочерняя Тема, то ее functions.php) этой темы. Затем определяется шаблон, согласно некой логике и иерархии (опять же, не забываем о дочерней теме), ссылку выше уже приводил.

    Например, вы набрали в адресной строке только название сайта. При этом никаких особых настроек не проводилось (я говорю о выборе статической страницы в админке блока). Дочерней темы нет. Запросится functions.php¹ используемой темы, затем движок попытается найти шаблон, в такой последовательности — front-page.php, home.php, index.php.
    В свою очередь, в каждом из этих шаблонов, происходит подключение необходимых частей, например файл хедера header.php, через функцию get_header(), сайдбара sidebar.php, через get_sidebar() и футера footer.php, через get_footer().

    Поняв эту структуру вызовов, вам будет проще организовать свою тему оформления. Например, если код слайдера (по разметке css) логично разместить в файле header.php, а его необходимо подключать только на главной, то сделайте свой файл, например header-slider.php. Он будет отличаться от основного только кодом слайдера. А в шаблоне для главной страницы, в нашем случае index.php пропишите простую истину²

    <?php
    if ( is_front_page() || is_home() ) {
        get_header( 'slider' ); //хедер со слайдером только для главной
        } else {
        get_header(); //обычный хедер для всех остальных
    }
    ?>

    К чему я всё это рассказываю, а к тому, доброжелательный участник Mick123, что все можно сделать круто, как никогда :))

    ¹ В общем, к этому моменту движок имеет «на руках» некие переменные, например такие, как «почти» заполненный WP_Query..
    ² Это один из вариантов решения, некоторые коллеги могут сказать что их несколько, и будут правы 🙂

    The End 😀

    Спасибо, wikicms.

    Например, если код слайдера (по разметке css) логично разместить в файле header.php, а его необходимо подключать только на главной, то сделайте свой файл, например header-slider.php.

    Так и сделаю.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Вопрос по functions.php» закрыта для новых ответов.