WordPress — Добавить тег к существующему сообщению, front-end

Я занимался этим весь день и не нашел элегантного решения, я пытаюсь сделать так, чтобы тег пользователя был добавлен в существующий пост на внешнем интерфейсе (с использованием WordPress). Процесс будет объявлен следующим образом …

  • В сообщении есть кнопка ввода текста и отправки (передний конец).
  • Пользователь (зарегистрированный) вводит тег в текстовое поле и отправляет
  • Тег пишется в пост (в идеале без обновления, используя ajax, но не обязательно.)

Кажется, что это должно быть прямо вперед, но я не могу найти никакой связанной информации, спасибо заранее.

РЕДАКТИРОВАТЬ: Рабочий, окончательный код выглядит так, спасибо!

<form name="primaryTagForm" id="primaryTagForm" method="POST" enctype="multipart/form-data" >
<fieldset>
<input type="text" name="newtags" id="newtags" value="true" />
<?php wp_nonce_field( 'post_nonce', 'post_nonce_field' ); ?>
<button class="button" type="submit"><?php _e('Tag Product', 'framework') ?></button>
</fieldset>
</form>

<?php
// If a user is logged in, and a form has been submitted with new tags
if ( is_user_logged_in() && isset( $_POST['newtags'] ) ) {
// Add the tags
wp_set_post_tags(get_the_ID(), sanitize_text_field($_POST['newtags']), true    );
} ?>

0

Решение

Ваш вопрос слишком широк и потребует, чтобы кто-то создал для вас целую форму (включая логику обработки). Это не то, для чего предназначен StackOverflow; поэтому я отвечу на простой вопрос, который существует в заголовке вашего сообщения:

Как добавить тег в существующий пост из внешнего интерфейса

Ответ:

использование wp_set_post_tags() добавить теги к сообщению при обработке формы. Например, если ваша форма ввода называется newtags, вы можете использовать что-то вроде:

// If a user is logged in, and a form has been submitted with new tags
if ( is_user_logged_in() && isset( $_POST['newtags'] ) ) {
// Add the tags
wp_set_post_tags(get_the_ID(), sanitize_text_field($_POST['newtags']), true );
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]