Как автоматически добавлять карточку риелтора на объявление, которое он выставил?

Ссылка скопирована
1 ответ

Нужно сделать так, чтобы в новом объявлении автоматически появлялась карточка и не одинаковая, а заранее разработанная, чтобы сайт сам понимал пользователя, от которого было выставлено объявление, т.е. агента?

Дополнительно:

Как автоматически добавлять карточку риелтора на объявление, которое он выставил?

Вариантов более одного, как создания самой карточки, так и ее вывода.

Ввод:
- Можно сделать кастомный тип записи "агент", идентификатор агента хранить в произвольном поле
- Можно сделать текстовые блоки под вывод через шорткод, закодировав ид агента в имени шорткода
и т.д.

Вывод:
- Можно добавить в шаблон код вывода "карточки".
- Можно добавить html карточки через хук the_content.
- Можно шорткод вставлять прямо в текст объявления, в т.ч. автоматически при создании объявления.
и т.д.

Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Андрей PHP Ответ

Да, это делается автоматически. Главное — определить связь между объявлением и агентом. В WordPress есть несколько нормальных вариантов: автор записи, отдельный CPT «Агент», пользователь с ролью «риелтор» или ACF-поле, где выбирается агент.

Если объявление создаёт сам агент как пользователь WordPress, проще всего брать автора записи:

$agent_id = (int) get_post_field('post_author', get_the_ID());
$agent = get_userdata($agent_id);

$agent_id = (int) get_post_field('post_author', get_the_ID()); $agent = get_userdata($agent_id);

В шаблоне объявления выводите карточку:

<div class="agent-card">
  <div class="agent-card__name"><?php echo esc_html($agent->display_name); ?></div>
  <div class="agent-card__phone"><?php echo esc_html(get_user_meta($agent_id, 'phone', true)); ?></div>
</div>

<div class="agent-card"> <div class="agent-card__name"><?php echo esc_html($agent->display_name); ?></div> <div class="agent-card__phone"><?php echo esc_html(get_user_meta($agent_id, 'phone', true)); ?></div> </div>

Если агенты должны иметь отдельные страницы, фото, должность, опыт и список объектов, лучше создать кастомный тип записи agent, а в объявлении сделать ACF Relationship/Post Object поле «Агент». Тогда одно объявление может быть связано с конкретным агентом независимо от автора записи.

Схема через ACF:

  • CPT agent — карточки риелторов;
  • CPT property — объявления;
  • поле property_agent в объявлении;
  • в шаблоне объявления вывод карточки выбранного агента.

Можно добавить карточку через фильтр the_content, если не хотите править шаблон:

add_filter('the_content', function ($content) {
    if (!is_singular('property')) {
        return $content;
    }
 
    return $content . render_agent_card(get_the_ID());
});

add_filter('the_content', function ($content) { if (!is_singular('property')) { return $content; } return $content . render_agent_card(get_the_ID()); });

Но для нормального дизайна лучше всё-таки выводить карточку в шаблоне объявления. Так проще контролировать место, адаптивность, микроразметку и стили.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно