Вызов функции-члена wp_rewrite_rules () - PullRequest
0 голосов
/ 17 мая 2018

Я получаю сообщение об ошибке на своем плагине целевой страницы:

    2018/05/17 16:25:00 [error] 16590#16590: *61429 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to a member function wp_rewrite_rules() on null in /var/www/vhosts/xxxxxx/httpdocs/wp-includes/rewrite.php:518
    Stack trace:
    #0 /var/www/vhosts/xxxxxxxxx/httpdocs/wp-content/plugins/xxxxxxxx/includes/functions.php(125): url_to_postid('/go/woocommerce...')
    #1 /var/www/vhosts/xxxxxxxxxx/httpdocs/wp-content/plugins/xxxxxxxxx/includes/functions.php(97): lsx_check_landing_page()
    #2 /var/www/vhosts/xxxxxxxxx/httpdocs/wp-includes/class-wp-hook.php(288): lsx_landing_page_style_check('/var/www/vhosts...')

И этот код вызывает это в плагине:

    function lsx_landing_page_style_check( $dir ){
$url = $_SERVER['REQUEST_URI'];
if( lsx_check_landing_page() ){
    add_filter( 'customize_loaded_components', 'lsx_setup_components', 100 );
    return LSXLDPG_PATH . 'framework';
}
return $dir;
}

function lsx_check_landing_page(){
$url = $_SERVER['REQUEST_URI'];
if( basename( $_SERVER['SCRIPT_FILENAME'] ) === 'customize.php' ){      
    parse_str( $_SERVER['QUERY_STRING'], $query );
    if( !empty( $query['url'] ) ){
        $url = $query['url'];
    }
    // if saving
}
if( !empty( $_POST['action'] ) && $_POST['action'] == 'customize_save' ){
    $url = wp_get_referer();
    $parsed = parse_url( $url );
    if( 'customize.php' == basename( $parsed['path'] ) && !empty( $parsed['query'] ) ){
        $query = urldecode( $parsed['query'] );
        parse_str( $query, $ref );
        if( !empty( $ref['url'] ) ){
            $url = $ref['url'];
        }
    }
}   
if( false !== strpos( $url, '/go/' ) ){
    $landing_page = url_to_postid( $url );
    if( !empty( $landing_page ) ){
        return $landing_page;
    }
    return true;
}   
return false;
}

Я загружаю все этов моем основном файле плагина с add_action ('plugins_loaded', function () {....

Но я не знаю, почему это вызывает проблемы. Пожалуйста, дайте мне несколько советов.

1 Ответ

0 голосов
/ 17 мая 2018

Проблема должна получить от url_to_postid() в вашем коде. Возможно, переменная $url пуста или неправильна. Эта функция проверяет, что вы используете постоянные ссылки и используете функцию wp_rewrite_rules().

В качестве подсказки вы должны использовать xDebug , чтобы получить более качественные сообщения об ошибках, включая трассировку стека, чтобы вы могли видеть источник ошибки, а не только ее результат.

...