Как ставить и удалять сценарии из очереди с помощью расширенных настраиваемых полей в Wordpress functions.php?

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

Я создал поле флажка, назвал его 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» в коде, который я разместил выше.


person Alex    schedule 04.04.2019    source источник


Ответы (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 );
person Lachie Mckelvie    schedule 05.04.2019