Динамически создавайте карточки в WordPress после отправки определенной формы.
Мне нужно создать страницу для моих сотрудников, которая будет разделена по регионам, в которых они работают, и по профессии.
Хотелось бы создать форму, которую они будут заполнять сами и после отправки в соответствующем разделе будут формироваться личные карточки. Как это сделать без установки тяжелых плагинов?
Я видел несколько методов, но ничего эффективного и правильного.
1 ответ
Создайте собственный тип сообщения:
// Add this code to your theme's functions.php file or a custom plugin
function create_collaborator_post_type() {
$args = array(
'public' => true,
'label' => 'Collaborators',
'supports' => array('title', 'editor', 'thumbnail'),
// Add any additional fields you need for collaborators
// such as 'region', 'profession', etc.
);
register_post_type('collaborator', $args);
}
add_action('init', 'create_collaborator_post_type');
Создание шаблонов страниц: создавайте отдельные файлы шаблонов для каждого региона и профессии. Например, создайте page-region.php и page-profession.php в папке вашей темы.
Добавить форму в каждый шаблон. В каждый файл шаблона добавьте форму для сбора информации о соавторах:
<!-- Add this code to page-region.php -->
<form method="post">
<label for="name">Name:</label>
<input type="text" name="name" id="name" required>
<!-- Add more fields for region-specific information -->
<input type="submit" value="Submit">
</form>
<!-- Add this code to page-profession.php -->
<form method="post">
<label for="name">Name:</label>
<input type="text" name="name" id="name" required>
<!-- Add more fields for profession-specific information -->
<input type="submit" value="Submit">
</form>
Обработка отправки формы. Обработайте отправку формы в каждом файле шаблона и создайте новую публикацию для соавтора:
// Add this code to page-region.php and page-profession.php after the form HTML
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
// Get other form fields
$post_data = array(
'post_title' => $name,
'post_type' => 'collaborator',
// Set other post meta values based on form input
);
$post_id = wp_insert_post($post_data);
if ($post_id) {
// Display a success message or redirect to a thank-you page
} else {
// Display an error message
}
}
Отображение личных карточек: запрос и отображение личных карточек в каждом файле шаблона:
// Add this code to page-region.php and page-profession.php after the form processing code
$args = array(
'post_type' => 'collaborator',
// Add additional arguments to filter by region or profession
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Display the collaborator information
the_title('<h2>', '</h2>');
the_content();
// Display additional fields
// Add appropriate HTML and styling for the personal cards
}
wp_reset_postdata();
} else {
// Display a message when no collaborators are found
}
Не забудьте настроить код в соответствии с вашими конкретными требованиями, например добавить дополнительные поля, стили и настроить цикл для отображения сведений о соавторе по желанию.
Обратите внимание, что этот код служит отправной точкой и может потребовать дальнейших корректировок в зависимости от ваших конкретных потребностей и структуры темы.