Когда следует использовать wp_register_script () с помощью wp_enqueue_script () и просто wp_enqueue_script ()?

У меня возникли проблемы с пониманием, когда вам нужно использовать wp_register_script(). В настоящее время я просто использую что-то вроде:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

Я много читал (Codex, блоги и т. д.), но не могу понять, когда я должен зарегистрироваться первым, или когда я должен просто поставить в очередь. В качестве примера я заметил, что TwentyTwelve не регистрирует ни стилей, ни скриптов, он просто помещает их в очередь.

42 голоса | спросил akTed 21 Jpm1000000pmMon, 21 Jan 2013 18:36:50 +040013 2013, 18:36:50

2 ответа


39

wp_register_script() страница Codex буквально говорит:

  

Безопасный способ регистрации javascripts в WordPress для последующего использования с wp_enqueue_script().

Это означает, что если вы хотите зарегистрировать свои скрипты, но не загружать их напрямую на своих страницах, вы можете зарегистрировать файлы один раз и затем загрузить их, когда они вам понадобятся.

Например:

У вас есть оператор switch, который загружает некоторую функциональность, но для двух из трех случаев требуется конкретный файл javascript, а другой нет. Вы можете вставлять скрипт каждый раз, затрачивая больше ресурсов, или просто вставлять скрипт в нужное вам время:

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

Нет необходимости регистрировать скрипт, а затем помещать в очередь, но он может предоставить некоторую логику в вашем коде, если вы зарегистрируете все сценарии, которые вам нужны где-то в вашем functions.php, а не везде в ваш код.

Кодекс также сообщает следующее:

  

Используйте wp_enqueue_scripts действие, чтобы вызвать эту функцию, или admin_enqueue_scripts, чтобы вызвать его на стороне администратора.

Это означает, что если вы хотите вставить свой сценарий в конец и в фоновом режиме, вы можете зарегистрировать сценарий один раз, а затем загрузить его в интерфейсе с помощью wp_enqueue_script, а в фоновом режиме - с кодом wp_enqueue_script.
Таким образом, вы не будете иметь один и тот же ресурс в два раза в одной теме, плагине, виджете или что-то еще.

ответил Mike Madern 21 Jpm1000000pmMon, 21 Jan 2013 18:47:19 +040013 2013, 18:47:19
2

IMHO главное преимущество использования wp_register_script до wp_enqueue_scripts проиллюстрировано в следующем абзаце из Codex :

  

Скрипты, которые были предварительно зарегистрированы с помощью wp_register_script () do   не нужно вручную ставить в очередь, используя wp_enqueue_script (), если они   перечисленные как зависимость другого скрипта, который находится в очереди. WordPress   автоматически включит зарегистрированный скрипт, прежде чем он включит   скрипт, установленный в очередь, который перечисляет зарегистрированный скрипт скрипта как   зависимость.

Если вы считаете, что вам это не нужно (например, потому что вы на 100% уверены, что ваш скрипт не будет задействован ни в какой зависимости), вы, вероятно, можете напрямую перейти к wp_enqueue_scripts без предварительного wp_register_script.

ответил Franco 1 J0000006Europe/Moscow 2017, 22:43:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132