Я пытаюсь добавить немного формы после каждого сообщения для плагина, который я должен кодировать, но я не очень знаком с Wordpress. При помощи add_action с the_content как рычаг я смог добавить некоторый текст к содержанию.
Моя проблема состоит в том, что целый текст, сохраненный в переменной $content, казалось, был обработан так или иначе. А именно, существует br / добавлен после каждого из моих полей ввода, которые повреждают расположение моей формы. Я заметил, что у меня нет этой проблемы, если я имел свое право формы перед формой комментария, например. Но я не хочу помещать свою форму здесь, мне нужна она, чтобы быть действительно сразу после самого сообщения до чего-либо связанного с комментариями.
Существует ли способ отключить этот текст и форматирование HTML, но только для формы я буду добавлять к содержанию? В случае, если нет никакого простого способа сделать так, я попытался найти рычаг, который позволил бы мне добавлять что-то ПОСЛЕ содержания и ПЕРЕД комментариями, чтобы сделать так, но не имел никакой удачи при нахождении один. Есть ли такой рычаг?
Вы на самом деле захотите filter
содержание, не используют действие. Вы могли перенести свою форму в буфер вывода и добавить его на к нему, как так:
function my_content_filter($content) {
ob_start();
// your form here
$form = ob_get_clean();
if (get_post_type() == 'post')
return $content . $form;
return $content;
}
add_filter('the_content', 'my_content_filter');
Сообщите мне, помогает ли это.
Если я понимаю то, что Вы делаете, и проблема, которую Вы имеете, первая вещь, которую я попробовал бы, должен добавить Ваш the_content
фильтр с большим приоритетным количеством так, чтобы это работало поздно, и надо надеяться после других фильтров форматирования.
add_filter('the_content','your_callback',100);
Если это не делает этого, Вам, вероятно, придется удалить и переупорядочить немного некоторые фильтры.
Если это - страница, и можно отредактировать шаблон для той страницы, Вы могли также работать get_the_content
, примените фильтры контента к нему, затем добавьте свою форму перед Вами echo
.
$content = get_the_content();
$content = apply_filters('the_content',$content);
$content = $content.$your_form;
echo $content;