Что означает "Не отменять регистрацию скрипта jquery в области администрирования"?


Мы все знаем преимущество использования кэширования cdn и т.д.. Ради этого я отключил скрипт и зарегистрировал jquery по ссылке cdn. Но проблема в том, что он показывает такую ошибку

Да, отладка в wordpress включена.

Он показывает такую ошибку.

Примечание: wp_deregister_script был вызван неправильно. Не отменяйте регистрацию скрипта jquery в области администрирования. Чтобы настроить таргетинг на тему внешнего интерфейса, используйте wp_enqueue_scripts крюк. Пожалуйста, смотрите раздел Отладка в WordPress для получения дополнительной информации. (Это сообщение было добавлено в версии 3.6.) в D:\learnnepal\wp-includes\functions.php в строке 3622

Но я думаю, что код в порядке.

Когда я удаляю следующие строки кода, которые не отображаются?

add_action( 'wp_enqueue_scripts', function(){
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), null, false );
    wp_enqueue_script( 'jquery');
});

Есть ли какие-либо проблемы с кодом?

Очевидно, что отключение отладки - это обходной путь, но очень плохая практика, не так ли?

Author: fuxia, 2015-11-02

3 answers

На основе ошибки...

add_action( 'wp_enqueue_scripts', function(){
    if (is_admin()) return; // don't dequeue on the backend
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), null, false );
    wp_enqueue_script( 'jquery');
});

Честно говоря, если у вас нет огромного трафика в обширной географической зоне, я бы сказал, что CDN сильно переоценены. Я наблюдал за зависанием на сайтах, которыми управлял, и очень часто узким местом является CDN - я смотрю на вас в Google. Таким образом, это может быть не то решение, которое стоит реализовывать.

Во-вторых, удаление основных сценариев из очереди - опасная игра. Плагины и темы зависят от этих сценариев. Если вы загружаете версию, отличную от той, ожидаемые сценарии могут завершиться неудачей.

Очевидно, что отключение отладки - это обходной путь, но очень плохая практика , не так ли?

Производство или разработка? Отладка должна быть отключена на рабочем сервере и включена только во время отладки.

 2
Author: s_ha_dum, 2015-11-02 14:51:19

Как отмечается в сообщении об ошибке, вы действительно не хотите deregister the jquery script in the administration area. Что вы могли бы сделать, чтобы избежать уведомления:

if ( ! is_admin() ) {
    add_action( 'wp_enqueue_scripts', function(){
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), null, false );
        wp_enqueue_script( 'jquery');
    });
}

Причина, по которой вам не следует отменять регистрацию в области администрирования, заключается в том, что большая часть основных функций WP для раздела администрирования зависит от JavaScript, и команда WP закодировала эту функциональность специально для работы с версией jQuery, которая поставляется с WordPress. В то время как не должно быть никакой разницы в функциональности, если в другая версия jQuery может сделать вашу административную область непригодной для использования.

 3
Author: phatskat, 2015-11-02 14:52:44

Если вы используете правый хук, то он не должен жаловаться:

if ( is_admin() ) {
    $hook = 'admin_enqueue_scripts';
} elseif ( 'wp-login.php' === $GLOBALS['pagenow'] ) {
    $hook = 'login_enqueue_scripts';
} else {
    $hook = 'wp_enqueue_scripts';
}
add_action( $hook, function() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', array(), null, false );
    wp_enqueue_script( 'jquery');
} );
 1
Author: bonger, 2015-11-02 15:27:46