Как ставить скрипты в очередь и удалять из очереди с расширенными пользовательскими полями в WordPress functions.php ?

#php #wordpress #wordpress-theming #advanced-custom-fields #acfpro

#php #wordpress #wordpress-тематизация #расширенные пользовательские поля #acfpro

Вопрос:

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

Я создал поле checkbox, вызвал его import_animejs и проверил. Затем использовал acf / load_field для постановки скрипта в очередь, но я чего-то не понимаю, поскольку он не работает.

Вот мой код:

 function acf_checkbox_scripts() {
    wp_register_script('animejs', get_stylesheet_directory_uri() . '/bower_components/animejs/lib/anime.min.js', array('jquery'),'1.1', true);
}
add_action( 'wp_enqueue_scripts', 'acf_checkbox_scripts', 5 );

function load_field_import_animejs( $field ) {
    wp_enqueue_script('animejs');
    return $field;
}
add_filter('acf/load_field/name=import_animejs', 'load_field_import_animejs');
  

Я ожидаю, что фильтр распознает, что import_animejs отмечен галочкой, и ставит в очередь anime.js но это не так.

Обновление: большое спасибо за ответ Лахлана, это работает, и просто для пояснения я полностью удалил функцию acf / load_field «load_field_import_animejs» в коде, который я опубликовал выше.

Ответ №1:

Вам нужно выполнить оператор if и проверить, является ли поле true

Это можно сделать с помощью:

 function acf_checkbox_scripts() {
    if ( get_field( 'import_animejs', 'options' ) ) { // only include 'options' if the acf field is on an acf options page, if not use the post_id of that page
        wp_register_script('animejs', get_stylesheet_directory_uri() . '/bower_components/animejs/lib/anime.min.js', array('jquery'),'1.1', true); 
        wp_enqueue_script('animejs');
    }
}

add_action( 'wp_enqueue_scripts', 'acf_checkbox_scripts', 5 );