Предупреждение PHP: отсутствует аргумент 2 для подключаемого модуля WPML wpdb :: prepare ()

Внезапно я получаю сообщение об ошибке на определенной серверной странице моего проекта wordpress:

Предупреждение: отсутствует аргумент 2 для wpdb :: prepare (), вызываемого в ... / wp-content / plugins / wpml-media / inc / wpml_media.class.php в строке 463 и определенного в ... / wp -includes / wp-db.php в строке 992

Что было бы:

wpml_media.class.php

// get language of their parents
if(!empty($missing_langs)){     
    $results = $wpdb->get_results($wpdb->prepare("
        SELECT p.ID, t.language_code 
        FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
        WHERE p.ID IN(".join(',', $missing_langs).")
    "));
    foreach($results as $row){
        $parent_langs[$row->ID] = $row->language_code;
    }
}

и wp-db.php

function prepare( $query, $args ) {
    if ( is_null( $query ) )
        return;

    $args = func_get_args();
    array_shift( $args );
    // If args were passed as an array (as in vsprintf), move them up
    if ( isset( $args[0] ) && is_array($args[0]) )
        $args = $args[0];
    $query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it
    $query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting
    $query = preg_replace( '|(?<!%)%f|' , '%F', $query ); // Force floats to be locale unaware
    $query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s
    array_walk( $args, array( $this, 'escape_by_ref' ) );
    return @vsprintf( $query, $args );
}

Я понятия не имею, что здесь происходит, есть идеи? К сожалению, срок поддержки автора истек.

Спасибо


person Stanley Ipkiss    schedule 28.01.2014    source источник


Ответы (2)



Дополнительная информация по этой проблеме здесь. По сути, не паникуйте, потому что это всего лишь предупреждение, поэтому на самом деле ничего не сломается.

Если вы хотите изменить плагин wpml-media, чтобы избавиться от этой ошибки, информация о разработчике в приведенной выше ссылке должна помочь. Если вы просто хотите, чтобы предупреждение исчезло, я цитирую:

Во-первых, если вы пользователь и хотите избавиться от этих ошибок, вам следует отключить отображение ошибок в PHP. Есть много способов сделать это, например, в php.ini, .htaccess и т. Д. Для этого вы можете просто поместить это в wp-config.php. (Обратите внимание, что скрытие ошибок на производственных сайтах в любом случае является хорошей практикой.)

@ini_set('display_errors', 0);
person Shellbot    schedule 28.01.2014