Я искал почти везде, но предложенные ответы мне не помогли.
Проблема: у меня установлена Wordpress, последняя версия (3.6.1). Я сделал чистую установку несколько раз, заглянул в wp-includes/option.php
и другие файлы, и я уверен, что все это работает, и у всех есть правильный контент.
Я разрабатываю плагин, и я использую функцию get_option
определенную в get_option
. Всякий раз, когда мой код вызывает эту функцию, я получаю ответ на 500: internal server error
. Странно, потому что код плагина следует вызывать из рамки WordPress …
Сделайте это еще более странным: другие функции, определенные в этих включенных файлах, например, add_options_page
, отлично работают и ведут себя так, как должны.
Так, например, это работает:
$pageTitle = "Title for my Options Page"; $menuLink = "Title for my Menu Link"; $userAccessLevel = 8; //that's admin $pageSlug = "slug-to-my-plugin-options-page"; $callbackFunction = array($this, 'optionsPage'); add_options_page($pageTitle, $menuLink, $userAccessLevel, $pageSlug, $callbackFunction);
Но это не так:
get_option("ntp_myoption");
И add_options_page
и get_option
определены в исходных файлах в той же папке ( wp-includes\option.php
и wp-includes\plugin.php
), обе функции эффективно находятся в этих файлах, оба блока кода выше находятся в одном файле в мой плагин, я не включал и не требовал никакого файла.
Кто-нибудь знает?
Как уже было get_option
, полный блок кода, из которого я вызываю get_option
– это из конструктора моего класса, который обертывает плагин.
function __construct() { global $wpdb; $this->table_iso = $wpdb->prefix . "ntp_iso"; $this->pluginUrl = get_option('siteurl') . '/wp-content/plugins/my-plugin'; }
Также, возможно, стоит упомянуть: у меня есть класс, который обертывает фактический плагин, а в нижней части этого .php-файла у меня есть (вне определения класса), этот код:
global $tp; $tp = new MyPlugin(); $plugin = plugin_basename(__FILE__); register_activation_hook( __FILE__, array($tp, 'install')); register_deactivation_hook( __FILE__, array($tp, 'deactivate')); add_action('add_meta_boxes', array($tp, 'init')); if (is_admin()) { add_action('admin_menu', array($tp, 'addOptionsPage')); add_filter("plugin_action_links_$plugin", array($tp, 'addSettingsLink')); }
Все они работают как шарм.