Проблема с плагином Wordpress: не удается получить текстовый файл в том же каталоге, что и .php

Вырвано из контекста:

<?php
$options=file_get_contents('options.txt');
?>

Это не работает. 'options.txt' находится в том же каталоге, что и плагин .php. Что я делаю неправильно? Я подумал, что поскольку .php подключается откуда-то еще, путь будет неправильным, поэтому я попробовал «/wp-content/plugins/myPlugin/options.txt». Но ничего...


person navand    schedule 03.01.2011    source источник


Ответы (3)


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

Кстати, вы понимаете, что технически этот файл будет доступен для публичного просмотра через URL-адрес? (Просто упомянул об этом на случай, если он содержит что-то даже смутно деликатное.)

person John Parker    schedule 03.01.2011
comment
Ну конечно; естественно. Нет ничего чувствительного. Всего несколько настроек. - person navand; 03.01.2011
comment
и, кстати, я, наконец, сделал это так: $optionst=file_get_contents(plugins_url().'/my_plugin/options.txt'); - person navand; 03.01.2011

Используйте путь относительно корневого каталога Wordpress без предшествующей косой черты:

wp-content/plugins/myPlugin/options.txt
person Community    schedule 03.01.2011
comment
Однако должны быть функции для получения каталога самого плагина. Проверьте документы. - person ; 03.01.2011
comment
Это сделало это. Черт, я чувствую себя глупо. Но да, я проверю файловые функции. - person navand; 03.01.2011
comment
Никогда не чувствуйте себя глупо. Загляни в будущее! Ошибка, которую вы только что совершили, исправлена. :) - person ; 03.01.2011

Я бы настоятельно не рекомендовал использовать собственный метод file_get_contents(). Не каждая настройка сервера позволит это сделать, поэтому, если вы когда-нибудь перенесете свой сайт или передадите код кому-то другому, у вас могут возникнуть проблемы.

Вместо этого используйте встроенный HTTP API, который входит в состав WordPress. Ваш конкретный пример станет:

$options = wp_remote_retrieve_body( wp_remote_get( plugins_url() . '/my_plugin/options.txt' ) );

Это будет использовать встроенный API для получения текстового файла, а затем получить тело запроса GET (сохранить содержимое текстового файла в переменной $options.

person EAMann    schedule 04.01.2011