Когда следует использовать 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 не регистрирует ни стилей, ни скриптов, он просто их ставит в очередь.

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

Страница 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 и в admin_enqueue_script с помощью admin_enqueue_script .
Таким образом, вы не будете иметь один и тот же ресурс в двух случаях в одной теме, плагине, виджетах и ​​т. Д.

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

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

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