it-swarm.com.ru

Включить файлы в файл функций дочерней темы

Как правило, в моем файле функций темы мне потребуются другие файлы, чтобы все было аккуратно.

require_once("foo.php");

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

8
curtismchale

Дочерние темы ссылаются на родительские темы по имени каталога, и при обычной установке все ваши темы живут в wp-content/themes/, поэтому я бы сказал, что можно ссылаться на эти темы по их относительному пути:

include '../parent-theme/some-file.php';

Если вас это не устраивает, я наблюдаю следующие константы в WordPress 3.0.1 с темой-entyten child, которая называется tt-child :

TEMPLATEPATH     /home/adam/public_html/wp3/wp-content/themes/twentyten
STYLESHEETPATH   /home/adam/public_html/wp3/wp-content/themes/tt-child

Таким образом, вы можете сделать следующее в вашей дочерней теме для ссылки на каталог родительской темы:

include TEMPLATEPATH . '/some-file.php';
12
Annika Backstrom

В детской теме правильный путь

require_once( get_stylesheet_directory() . 'foo.php');

В то время как в родительской теме вы все еще можете использовать

require_once ( get_template_directory() . 'foo.php' );

get_template_directory() по-прежнему работает в дочерней теме, к сожалению, целевая директория родительской темы. В вашем случае это полезно

10
Christian

Вы определенно не хотите жестко кодировать URL. Правильный способ сделать это

require_once( get_stylesheet_directory(). '/my_included_file.php' );

Больше информации на Wordpress Codex

Теперь, если ваш, например, модифицируя header.php, который имеет include, вы бы ссылались на него следующим образом:

require_once( get_stylesheet_directory() . '/../parenthteme/my_included_file.php' );
2
Marlyse Comte

Используйте <?php get_template_part( 'name-the-page-here' ); ?>. Без расширения .php

2
Everaldo Matias

Привет @curtismchale :

Не знаю, так это или нет, но вам нужно включать кавычки вокруг foo.php, вот так:

require_once('foo.php');

Это решает вашу проблему?

2
MikeSchinkel

Я думаю, что это лучший способ получить путь к вашей детской теме.

<?php $get_my_path = dirname( get_bloginfo('stylesheet_url') ); ?>
<?php require_once( $get_my_path. '/my_included_file.php' ); ?>

Получите представление от http://dynamicweblab.com/2013/02/get-template-path-in-wordpress-child-themes/

0
Maidul

Полностью можно и нормально делать включения в functions.php.

Я делаю это так в моей дочерней теме (php - это подкаталог для кода):

include 'php/core.php';

Если у вас есть проблемы без видимой причины, попробуйте включить режим отладки в wp-config.php:

define('WP_DEBUG', true);

Там могут быть соответствующие ошибки, происходящие, но не отображаются.

0
Rarst