9

ほとんどどこでも検索しましたが、提案された回答は役に立ちませんでした。

問題: 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'));
}

これらはすべて魔法のように機能します。

4

5 に答える 5

12

同じ致命的なエラーが発生したため、関連するパスを含む wp-config.php ファイルをロードしました。

私のファイルはwp-content/plugins/myplugin/css/mystyle.php でした

ページの上部に次のコードを追加しました。その後、get_option()関数は完全に機能しました。

require_once('../../../../wp-config.php'); 

これは助けになるかもしれません。

よろしく

于 2014-01-02T12:45:19.180 に答える
1

私は Sumith のコードを使用しましたが、少し編集しました。これは、ここで言及されているコードの中で機能する唯一のコードでした。

これが私のものです:

require_once(dirname(__FILE__).'../../../../wp-config.php'); 
于 2014-03-09T21:55:03.547 に答える
1

options.php が機能しているかどうかをテストできます。

http://yourdomain.com/wp-admin/options.php

オプションが保存されている場合は、リストに表示されます。

しかし...

add_options_page はダッシュボード メニュー用です。

get_option を使用するために必要なのは add_option です

http://codex.wordpress.org/Function_Reference/add_option

于 2013-10-12T18:24:00.100 に答える
1

「PHP Fatal error: Call to undefined function apply_filter」エラーが発生した人のために、ここにメモを追加したかっただけです。このエラーをGoogleで検索したところ、この質問が見つかりました。

注:関数のスペルをチェックして、単数形の "apply_filter" ではなく複数形の "apply_filters" があることを確認する必要がある場合があります。

于 2016-04-04T07:51:53.800 に答える