хочу отрисовать картинку с информацией, возвращаемой функцией из плагина. Что мне нужно прописать в заголовке файла, отрисовывающего картинку, чтоб он видел функцию из плагина?
И еще вопрос: можно ли этот файл поместить в директорию с плагином и как тогда его оттуда вызвать? пока от лежит просто в корне.
Несколько запутано… Ну уж как понял 😉
Функции плагина, если он активирован, доступны в любом "месте". Например, вы кидаете свой файл (1) в каталог темы. В самой теме, например файле index.php подключаете этот файл (например, через require_once). Теперь в (1) доступны функции всех плагинов.
Файл (1) вы можете поместить куда угодно, главное, чтобы вы указали к нему верный путь. Чтобы не запутаться подключайте через константу ABSPATH, которая указывает на "корень" сайта.
Я хочу написать файл, рисующий картинку для плагина feedstat:
<?
Header("Content-Type: image/gif");
$image = ImageCreate(88, 15);
$blue = ImagecolorAllocate($image, 174, 188, 218);
$black = ImageColorAllocate($image, 0, 0, 0);
ImageFill($image, 1, 1, $blue);
ImageRectangle($image, 0, 0, 87, 14, $black);
$count = svj_feed_string (0);
ImageString($image, 2, 5, 1, $count, $black);
ImageGIF($image);
ImageDestroy($image);
?>
Но вот вызов функции из плагина дает ошибку – файл ничего не знает про эту функцию.
Думаю, что вам нужно более точно сформулировать вопрос. А то у вас не понятно, что за "файл", что за "функция", из какого "файла" что нужно вызывать? Что за "вызов функции из плагина" – здесь вообще о чем идет речь??? Давайте-ка поконкретней и поточнее.
текст php-файла я привел 🙂
его (файла) вызов я хочу поместить в <img src="имя_файла" /> для отрисовки картинки со статистикой.
функция svj_feed_string (0);, которая отличается от svj_feed_show(), тем что возвращает строку. Плагин feedstat из вашей сборки 🙂
Свой php-файл оформите в виде одной функции, например "show_image_stat_rss()". Еще лучше, если вы кинете её в виде плагина, то есть нужно добавить строчки, что это плагин. После этого активируете его и feedstat.
Для получения результата в шаблоне пишите:
Так и сделал. Получил следующие неудовлетворительный результат:
Уберите header из своей функции. Вы сами подумайте, что должна возвращать функция, которую вы вставляете в src тэга img???
Отвечаю, ссылку на файл. Смотрите второй параметр функции "ImageGIF".
При таком подходе создается физическая сущность картинки (например, http://yaroshevich.ru/tmp/count24.gif). Причем каждый раз с новым именем. Но тогда нужно еще отслеживать и удаление картинки и тп.
А изначально хотелось, чтобы физ.картинки не генерировалась
Ну как объяснили проблему, так я её и понял. Вы же сами пишете, что хотите указать в src имя файла…
Если вы хотите использовать функциии WordPress и его плагинов, то и ваши подключаемые файлы должны иметь доступ к этим функциям. В этом случае вам нужно в шаблоне прописывать именно функцию. В качестве варианта, вы можете вызывать её через отдельный файл, но в этом случае придется прописывать и доступ к WordPress (а иначе как вы получите данные другого плагина?). Кроме этого вам нужно решить проблему с header, который вы будете посылать раньше, чем WordPress’овский, поскольку WordPress использует буферизацию вывода. Это если делать совершенно отдельно.
Еще один вариант, это все-таки кинуть свой файл в тему шаблона, подключить его через require (этим вы получите доступ к WordPress в своей функции) где-нибудь повыше. В src укажите путь к своему файлу с каким-либо параметром. В своем файле пропишите анализ этой переменной – если она есть, то вызывается функция вывода картинки (уже с header).
Решилось все в итоге прописывание в первоначальном файле след. строчек
require_once(dirname(__FILE__).’/wp-config.php’);
require_once(dirname(__FILE__).’/wp-includes/wp-db.php’);
Спасибо за Вашу помощь!
Можно и так, но мое IMHO, что это неверно. Вместо того, чтобы "прикрутить" свою функцию к WordPress, вы наоборот, "прикрутили" WordPress к своей функции. То есть теперь каждый вызов своего файла автоматически подгружает и кучу файлов и функций самого WordPress. Причем, обратите внимание, что свой файл вы прописываете в шаблоне, то есть получается повторный вызов функций WordPress’а, а это не мало.