Как получить TEMPLATEPATH без имени темы? Константа THEMEPATH отсутствует?

24 мар. 2011 г., 00:21:18
Просмотры: 2.87K
Голосов: 0

Существует ли способ получить путь к директории тем без указания текущей темы в пути?

Например, в стандартной установке WordPress мне нужно получить ссылку на:

C:\xampplite\htdocs\sitename/wp-content/themes/

Но константа TEMPLATEPATH возвращает...

C:\xampplite\htdocs\sitename/wp-content/themes/currentActiveTheme

0
Все ответы на вопрос 4
4
dirname( STYLESHEETPATH );

Это вернет путь к директории темы.

Никогда не предполагайте, что /wp-content/ находится внутри ABSPATH. Я часто использую другую директорию и домен для wp-content, чтобы разрешить запросы без куки к файлам темы. Плохие плагины и темы ужасно ломаются в таких случаях.

Дополнение

Или используйте get_theme_root() для пути к файлам и get_theme_root_uri() для URI. Оба определены в wp-includes/theme.php.

24 мар. 2011 г. 01:12:29
Комментарии
  • 1 Спасибо. Это тоже работает. Есть ли преимущества использования этого варианта по сравнению с ответом imHavoc?
Scott B Scott B
24 мар. 2011 г. 15:09:18

@Scott B Разницы быть не должно. STYLESHEETPATH определяется в wp-includes/default-constants.php, вызывая get_stylesheet_directory(), который запрашивает get_theme_root().

fuxia fuxia
24 мар. 2011 г. 15:46:18

на самом деле, после дополнительного анализа, ваш ответ оказался более подходящим для моего вопроса. он возвращает файловый путь, а не URL-путь, как это делает get_theme_root_uri() (c:\ вместо http://), и поскольку я перемещаю файлы, именно это мне и нужно было в данном случае.

Scott B Scott B
24 мар. 2011 г. 19:37:15

@Scott B Я добавил две функции для пути и URI, чтобы завершить ответ.

fuxia fuxia
25 мар. 2011 г. 02:22:59
2

Константы THEMEPATH не существует, но вы можете использовать функцию get_theme_root_uri() для получения пути к папке с темами.

24 мар. 2011 г. 00:36:53
Комментарии

Это выглядит как лучший вариант. Тестирую сейчас.

Scott B Scott B
24 мар. 2011 г. 14:42:04

Это работает отлично, однако в данном случае мне нужен путь к файлу, а не URL. Я перемещаю файлы на сервере из папки плагина в папку темы. Ваш ответ все равно работает, но зависит от контекста вопроса.

Scott B Scott B
24 мар. 2011 г. 19:40:07
0

WP_CONTENT_DIR и WP_CONTENT_URL, а также функция content_url() помогут вам в большинстве случаев.

24 мар. 2011 г. 00:51:04
4

Вы можете использовать константу ABSPATH и просто добавить к ней wp-content/themes/, вот так:

ABSPATH . "wp-content/themes/" 
24 мар. 2011 г. 00:37:50
Комментарии

Может ли пользователь указать любую другую директорию, отличную от wp-content/themes, для хранения своих тем?

Scott B Scott B
24 мар. 2011 г. 00:43:39

@Scott: Это возможно, но очень сложно реализовать, и маловероятно, что кто-то это делал.

Bainternet Bainternet
24 мар. 2011 г. 00:51:19

Две строки в wp-config.php не так уж сложны. ;) Просто определите WP_CONTENT_DIR и WP_CONTENT_URL.

fuxia fuxia
24 мар. 2011 г. 01:13:45

@toscho: спасибо, каждый день узнаёшь что-то новое, я как раз читал об этом на http://codex.wordpress.org/Determining_Plugin_and_Content_Directories

Bainternet Bainternet
24 мар. 2011 г. 01:41:43