我几乎到处搜索过,但提出的答案对我没有帮助。
问题:我有一个WordPress安装,最新版本(3.6.1(。我已经多次进行了全新安装,查看了wp-includes/option.php
和其他文件,我很确定它都有效并且都有正确的内容。
我正在开发一个插件,并且正在使用Wordpress定义的函数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
的完整代码块 - 它来自包装插件的类的构造函数。
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'));
}
这些都像魅力一样工作。
我得到了同样的致命错误,然后我加载了带有相关路径的wp-config.php文件。
我的文件是wp-content/plugins/myplugin/css/mystyle.php
我在页面顶部添加了以下代码。然后get_option((函数完美运行。
require_once('../../../../wp-config.php');
也许这会有所帮助。
问候
我怀疑wp-include''option.php没有被加载。
只是为了咧嘴笑,就在调用 get_options(( 之前添加
include_once('wp-includes'option.php');
或者尝试在选项中调用其他内容.php例如:update_option(null);
option.php
包含在wp-includes/functions.php
内部,而plugin.php
包含在几个不同的地方之一。
您可以通过将其插入代码来查看当前包含/需要的所有文件:
$includedStuff = get_included_files();
print_r($includedStuff);
祝你好运!
您可以测试选项.php是否正常工作:
http://yourdomain.com/wp-admin/options.php
如果您的选项已保存,则它们将被列出。
但。。。
add_options_page用于仪表板菜单。
您需要的是add_option才能使用get_option
http://codex.wordpress.org/Function_Reference/add_option
我只是想在这里为任何收到"PHP 致命错误:调用未定义的函数apply_filter"错误的人添加一个注释。我在谷歌上搜索了这个错误,发现了这个问题。
注意:您可能需要检查您的函数拼写,以确保您有"apply_filters",复数,而不是"apply_filter"单数,因为这是我的问题(这导致我写这篇文章!
我使用了Sumith的代码,但对其进行了一点编辑 - 这是这里提到的代码中唯一有效的代码。
这是我的:
require_once(dirname(__FILE__).'../../../../wp-config.php');