Динамически создавайте карточки в 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
 }

Не забудьте настроить код в соответствии с вашими конкретными требованиями, например добавить дополнительные поля, стили и настроить цикл для отображения сведений о соавторе по желанию.

Обратите внимание, что этот код служит отправной точкой и может потребовать дальнейших корректировок в зависимости от ваших конкретных потребностей и структуры темы.

Другие вопросы по тегам