La idea es crear un campo select en Advanced Custom Fields pero generar sus opciones desde el código PHP.
De esta forma podemos reutilizar estos mismos valores en otras partes de la web.
El código define una función llamada tms_icons_list_load_field que se utiliza como filtro en Advanced Custom Fields (ACF), un plugin de WordPress para la creación de campos personalizados.
La función tms_icons_list_load_field se ejecuta cuando se carga un campo específico con una clave field_0000000000000 (este es un valor ficticio en el código, en realidad debería ser una clave real proporcionada por ACF). Esta función modifica las opciones de selección del campo y establece el campo como obligatorio.
Dentro de la función, se define un array llamado $field['choices'] que contiene una lista de iconos con sus respectivos nombres traducidos. Cada elemento del array representa una opción para seleccionar un icono y tiene una clave única (como ‘none’, ‘arrow-right’, ‘arrow-left’, etc.) y un valor que es el nombre traducido del icono en el idioma especificado (‘tms’).
Una vez que se han modificado las opciones del campo, la función devuelve el campo modificado usando return $field;.
En resumen, este código PHP modifica las opciones de un campo personalizado en ACF, añadiendo una lista de iconos y estableciendo el campo como obligatorio. Esto permite al usuario seleccionar un icono de la lista cuando se utiliza este campo personalizado en un formulario de WordPress.
<?php
if ( ! function_exists( 'tms_icons_list_load_field' ) ) :
add_filter( 'acf/load_field/key=field_0000000000000', 'tms_icons_list_load_field' );
function tms_icons_list_load_field( $field ) {
$field['required'] = true;
$field['choices'] = array(
'none' => esc_attr__( 'None', 'tms' ),
'arrow-right' => esc_attr__( 'Arrow right', 'tms' ),
'arrow-left' => esc_attr__( 'Arrow left', 'tms' ),
'bag' => esc_attr__( 'Bag', 'tms' ),
'blog' => esc_attr__( 'Blog', 'tms' ),
'check-false' => esc_attr__( 'Check false', 'tms' ),
'check-true' => esc_attr__( 'Check true', 'tms' ),
'chevron-right' => esc_attr__( 'Chevron right', 'tms' ),
'chevron-left' => esc_attr__( 'Chevron left', 'tms' ),
'close' => esc_attr__( 'Close', 'tms' ),
'facebook' => esc_attr__( 'Facebook', 'tms' ),
'instagram' => esc_attr__( 'Instagram', 'tms' ),
'headphones' => esc_attr__( 'Headphones', 'tms' ),
'linkedin' => esc_attr__( 'Linkedin', 'tms' ),
'pinterest' => esc_attr__( 'Pinterest', 'tms' ),
'search' => esc_attr__( 'Search', 'tms' ),
'twitter' => esc_attr__( 'Twitter', 'tms' ),
'youtube' => esc_attr__( 'YouTube', 'tms' ),
'whatsapp' => esc_attr__( 'WhatsApp', 'tms' ),
);
return $field;
}
endif;
