source

Wordpress: PHP 치명적 오류: 정의되지 않은 함수 get_option() 호출

itover 2023. 2. 18. 19:45
반응형

Wordpress: PHP 치명적 오류: 정의되지 않은 함수 get_option() 호출

거의 모든 곳을 찾아봤지만, 제안된 답변은 도움이 되지 않았다.

문제:Wordpress가 설치되어 있습니다.마지막 버전(3.6.1)입니다.클린 인스톨을 여러 번 실시해, 그 인스톨을 조사했습니다.wp-includes/option.php다른 파일들도 모두 작동하며 모두 올바른 내용을 가지고 있다고 확신합니다.

플러그인을 개발하고 있으며 워드프레스 정의 함수를 사용하고 있습니다.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'));
}

이것들은 모두 마법처럼 작동한다.

같은 Fatal Error가 발생하여 wp-config.php 파일을 관련 경로로 로드했습니다.

내 파일은 wp-content/plugins/myplugin/css/mystyle이었다.php

페이지 상단에 다음 코드를 추가했습니다. get_option() 함수는 완벽하게 동작했습니다.

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

아마 이게 도움이 될 거야.

안부 전해요

wp-includes 옵션이 의심됩니다.php가 로드되지 않았습니다.

greens의 경우 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_module_page는 대시보드 메뉴용입니다.

get_option을 사용하려면 add_option이 필요합니다.

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

"PHP Fatal error: Call to undefined function apply_filter" 오류가 발생한 사용자를 위해 여기에 메모를 추가하려고 합니다.이 에러를 구글에서 검색해 본 결과, 이 질문이 나왔습니다.

메모: 함수 철자를 체크하여 "apply_filters" 단수가 아닌 "apply_filters"가 복수인지 확인해야 합니다.이것은 저의 문제이기 때문에, 이 투고에 액세스 할 수 있습니다.

Sumith's Code를 사용했지만 조금 편집했습니다.여기 언급된 코드 중 유일하게 동작하는 코드였습니다.

여기 제 것이 있습니다.

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

언급URL : https://stackoverflow.com/questions/19326761/wordpress-php-fatal-error-call-to-undefined-function-get-option

반응형