Cuando intentas hacer un INSERT en WordPress con textos escritos en PHP que contienen acentos es posible que después, al consultar los datos, veamos que los acentos en WordPress y la letra ñ se han convertido en interrogantes (?) u otros caracteres.
Esto tiene que ver con el tipo de cotejamiento que asigna WordPress a las tablas, en el caso de las instalaciones que manejamos, el valor por defecto es: latin1_swedish_ci.
Existe un método para que al insertar los datos desde PHP se conserven bien los acentos en WordPress si usamos la función utf8_encode aquí vemos un ejemplo rellenando una tabla de provincias de España.
$values=" (1, 'Barcelona', 1, 1), (2, 'Girona', 1, 2), (3, 'Tarragona', 1, 3), (4, 'Lleida', 1, 4), (5, 'Valencia', 10, 0), (6, 'Madrid', 14, 0), (7, 'Mallorca', 5, 0), (8, 'Badajoz', 11, 0), (9, 'Málaga', 2, 0), (10, 'Murcia', 17, 0), (11, 'Sevilla', 2, 0), (15, 'Segovia', 9, 0), (16, 'Vizcaya', 16, 0), (17, 'Álava', 16, 0), (18, 'Albacete', 8, 0), (19, 'Alicante', 10, 0), (20, 'Almería', 2, 0), (21, 'Asturias', 21, 0), (22, 'Ávila', 9, 0), (23, 'Baleares', 5, 0), (24, 'Burgos', 9, 0), (25, 'Cáceres', 11, 0), (26, 'Cádiz', 2, 0), (27, 'Cantabria', 7, 0), (28, 'Castellón', 10, 0), (29, 'Ceuta', 18, 0), (30, 'Ciudad Real', 8, 0), (31, 'Córdoba', 2, 0), (32, 'Cuenca', 8, 0), (33, 'Granada', 2, 0), (34, 'Guadalajara', 8, 0), (35, 'Guipúzcoa', 16, 0), (36, 'Huelva', 2, 0), (37, 'Huesca', 3, 0), (38, 'Jaén', 2, 0), (39, 'La Coruña', 12, 0), (40, 'La Rioja', 13, 0), (41, 'Las Palmas', 20, 0), (42, 'León', 9, 0), (43, 'Lugo', 12, 0), (44, 'Melilla', 19, 0), (45, 'Navarra', 15, 0), (46, 'Orense', 12, 0), (47, 'Palencia', 9, 0), (48, 'Pontevedra', 12, 0), (49, 'Salamanca', 9, 0), (55, 'Valladolid', 9, 0), (51, 'Soria', 9, 0), (52, 'Tenerife', 20, 0), (53, 'Teruel', 3, 0), (54, 'Toledo', 8, 0), (56, 'Zamora', 9, 0), (57, 'Zaragoza', 3, 0);"; $sql = "INSERT INTO wp_states (state_id, state_txt, region_id, state_val_id) VALUES ". utf8_encode($values); $wpdb->query($sql);