tes*_*ser 8 php wordpress wordpress-plugin
我几乎到处搜索,但建议的答案对我没有帮助.
问题:我有一个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);
Run Code Online (Sandbox Code Playgroud)
但这不是:
get_option("ntp_myoption");
Run Code Online (Sandbox Code Playgroud)
双方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';
}
Run Code Online (Sandbox Code Playgroud)
也许值得一提:我有一个包装实际插件的类,在.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'));
}
Run Code Online (Sandbox Code Playgroud)
这些都像魅力一样.
Sum*_*han 10
我得到了相同的致命错误,然后我加载了相关路径的wp-config.php文件.
我的文件是wp-content/plugins/myplugin/css/mystyle.php
我在页面顶部添加了以下代码.然后get_option()函数完美运行.
require_once('../../../../wp-config.php');
Run Code Online (Sandbox Code Playgroud)
可能这会有所帮助.
问候
我怀疑wp-includes\option.php没有被加载.
只是为了咧嘴笑,就在调用get_options()之前添加
include_once('wp-includes\option.php');
或者尝试在option.php中调用其他内容,例如: update_option(null);
option.php包含在内部,wp-includes/functions.php同时plugin.php包含在几个不同的地方之一.
您可以通过将其插入代码中来查看当前包含/所需的所有文件:
$includedStuff = get_included_files();
print_r($includedStuff);
Run Code Online (Sandbox Code Playgroud)
祝好运!
| 归档时间: |
|
| 查看次数: |
26617 次 |
| 最近记录: |