Wordpress: Как добавить дополнительное поле в форму отправки сообщений пользователями и присвоить ему правильную таксоноPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Wordpress: Как добавить дополнительное поле в форму отправки сообщений пользователями и присвоить ему правильную таксоно

Сообщение Anonymous »

У меня есть бесплатная версия плагина «Публикации, отправленные пользователем», который позволяет пользователям создавать сообщения Wordpress. У него есть один раскрывающийся список для категории сообщения, однако мне нужен второй, где пользователи выбирают местоположение. Я установил «местоположение» как таксономию. Я использовал JS в своем плагине фрагментов кода, чтобы преобразовать одно из свободных текстовых полей в раскрывающийся список, в котором отображаются параметры «местоположения», однако выбор местоположения, который пользователь делает при заполнении формы, не назначается опубликованному сообщению. В сообщении нет ничего из категории местоположения. Пожалуйста, помогите мне добиться этого с помощью кода, поскольку в данный момент я не могу позволить себе плагины Premium. Это JS-код:
document.addEventListener('DOMContentLoaded', function () {
// Target the custom field by its ID
const customField = document.getElementById('user-submitted-custom');

if (customField) {
// Create a new select element
const locationDropdown = document.createElement('select');
locationDropdown.setAttribute('id', 'user-submitted-location');
locationDropdown.setAttribute('name', 'usp_custom_field'); // Same name as the original input
locationDropdown.setAttribute('data-required', 'true');
locationDropdown.required = true;
locationDropdown.classList.add('usp-input');

// Fetch terms from the 'location' taxonomy
fetch('/wp-json/wp/v2/location?per_page=100')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(locations => {
// Add a default placeholder option
const defaultOption = new Option('Select a Location', '', true, false);
locationDropdown.add(defaultOption);

// Add location terms as options
locations.forEach(location => {
const option = new Option(location.name, location.id);
locationDropdown.add(option);
});

// Replace the original input field with the dropdown
customField.replaceWith(locationDropdown);
})
.catch(error => {
console.error('Error fetching locations:', error);
});
} else {
console.error('Custom field not found!');
}
});


Я не знаю, как этого добиться, я спросил ChatGPT, который предоставил этот фрагмент PHP, но он не сработал:
add_action('usp_post_submit', 'assign_custom_taxonomies', 10, 2);
function assign_custom_taxonomies($post_id, $data) {
// Check if location field exists and assign terms
if (!empty($data['usp_custom_field'])) {
$locations = array_map('intval', (array) $data['usp_custom_field']); // Ensure it's an array of integers
wp_set_post_terms($post_id, $locations, 'location');
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... by-users-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»