Как я могу преобразовать абсолютный путь к файлу в один CSS? - PullRequest
1 голос
/ 18 октября 2011

Я пытаюсь отобразить случайно выбранное фоновое изображение на сайте WordPress. Моя стратегия заключается в том, чтобы встроить атрибут style элемента <html>, например:

<html style="background:#e8e6da url(<?php
$bg_imgs = glob(get_template_directory().'/backgrounds/*.jpg');
shuffle($bg_imgs);
echo $bg_imgs[0]; ?>) left top fixed">

На моем локальном сервере это выводит

<html style="background:#e8e6da url(C:\xampp\htdocs\mysite/wp-content/themes/my_theme/backgrounds/paper2.jpg) left top fixed">

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

Так что я собирался возиться с использованием substr(), чтобы отрезать ненужную часть пути, но я не уверен, в зависимости от того, где развернут сайт, что вернет get_template_directory(). Я не хочу жестко кодировать все, что может измениться.

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

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Вы можете попробовать получить корень документа и отрубить его в начале полного пути:

$docRoot_len = strlen($_SERVER['DOCUMENT_ROOT']);
$bg_imgs = glob(get_template_directory().'/backgrounds/*.jpg');
shuffle($bg_imgs);
echo substr($bg_imgs[0], $docRoot_len);

Я знаю, что это не надежно - это просто идея.

1 голос
/ 18 октября 2011

Попробуйте get_bloginfo('template_url') вместо или, возможно, get_template_directory_uri()

...