вызов функции из плагина

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

И еще вопрос: можно ли этот файл поместить в директорию с плагином и как тогда его оттуда вызвать? пока от лежит просто в корне.

Несколько запутано… Ну уж как понял 😉

Функции плагина, если он активирован, доступны в любом "месте". Например, вы кидаете свой файл (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.

Для получения результата в шаблоне пишите:

<?php if (function_exists('show_image_stat_rss')) { ?>
<img src="<?php show_image_stat_rss() ?>" />
<?php }?>

Так и сделал. Получил следующие неудовлетворительный результат:

<img src="%3Cbr%20/%3E%0A%3Cb%3EWarning%3C/b%3E:%20%20Cannot%20modify%20header%20information%20-%20headers%20already%20sent%20by%20%28output%20started%20at%20/pub/home/raleigh/yarosh/wp-content/themes/connections/index.php:4%29%20in%20%3Cb%3E/pub/home/raleigh/yarosh/wp-content/plugins/feedstat.php%3C/b%3E%20on%20line%20%3Cb%3E35%3C/b%3E%3Cbr%20/%3E%0AGIF87aX,+%EF%BF%BD1%EF%BF%BD%EF%BF%BDx=%EF%BF%BDc%EF%BF%BD%EF%BF%BD%09Y8a%EF%BF%BD+%D2%82F%EF%BF%BD%EA%96%9C%1C%3E%CB%A8s%EF%BF%BD%0CR%EF%BF%BDR%EF%BF%BD%0C:%EF%BF%BD%5E%EF%BF%BD%09%EF%BF%BDtX%EF%BF%BD%16y%EF%BF%BD%7B%EF%BF%BDs%EF%BF%BD%EF%BF%BDq%EF%BF%BDW%1D%EF%BF%BD%EF%BF%BD%EF%BF%BDoPV%0F%EF%BF%BD%EF%BF%BD%02%EF%BF%BD%60%EF%BF%BD&amp;%06c%EF%BF%BD%EF%BF%BDg%EF%BF%BD%EF%BF%BD%05U%02%EF%BF%BD3%EF%BF%BD#Iy%EF%BF%BD%14%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%19Q;"></li>

Уберите 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’а, а это не мало.

Anonymous
Отправить
Ответ на: