У меня есть бесплатная версия плагина «Публикации, отправленные пользователем», который позволяет пользователям создавать сообщения 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
Wordpress: Как добавить дополнительное поле в форму отправки сообщений пользователями и присвоить ему правильную таксоно ⇐ Php
Кемеровские программисты php общаются здесь
1733073324
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');
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79242094/wordpress-how-to-add-additional-field-in-a-form-for-submitting-posts-by-users-a[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия