#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 );