Intereting Posts
Как получить ярлыки из сообщения Использование add_rewrite_rule Какой из моих блогов и личных данных передается, когда WordPress автоматически проверяет наличие обновлений? Конфигурация администратора без меню после выписки не один из вариантов в настройках экрана Переименование проблемы wp_content Как переместить стиль из файла шаблона в раздел <head>? Получить все сообщения из категорий Как я могу управлять тем, что отправляется на RSS-канал и пользовательские каналы Мета-поле (в пользовательском типе сообщений) с двумя полями разных типов Bootstrap Navwalker не отображается Неверный запрос (неверное имя хоста) на рабочем сервере, проблема с базой данных single_term_title () работает до get_the_title () Фильтрация комментариев Ответ Ссылки (comment_reply_link_args) для «бесконечных ответов» в вложенных комментариях Справка по многоуровневой настройке – простой домен / субсайт всегда перенаправляется в домен с помощью subdir multisite

wp_insert_post нарушает правила перезаписи

Я использую wp_insert_post для программного добавления контента на сайт. Это отлично работает с сообщениями, категориями и тегами, но не со страницами.

Когда я пытаюсь добавить страницу (т. Е. Post с post_type = page), правила перезаписи не будут правильно восстановлены (или что-то происходит с ними после wp_insert_post ). В частности, правила, связанные с URL-адресами и тегами, теряются, как указано ниже:

 [category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?category_name=$matches[1]&feed=$matches[2] [category/(.+?)/(feed|rdf|rss|rss2|atom)/?$] => index.php?category_name=$matches[1]&feed=$matches[2] [category/(.+?)/page/?([0-9]{1,})/?$] => index.php?category_name=$matches[1]&paged=$matches[2] [category/(.+?)/?$] => index.php?category_name=$matches[1] [tag/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?tag=$matches[1]&feed=$matches[2] [tag/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?tag=$matches[1]&feed=$matches[2] 

…и т.д

Это означает, что URL-адреса архива тегов и категорий разбиваются. Просто нажмите «Настройки»> «Постоянная ссылка», чтобы восстановить их. Попробовали исправить с помощью $wp_rewrite->flush_rules() сразу после wp_insert_post но это не wp_insert_post проблему …

Трудно сказать, какова ваша проблема, не видя больше кода, но я бы поспорил, что ваша проблема будет решена, если вы добавите это после вставки вашего сообщения:

 do_action('save_post', $post_ID, $post); 

WordPress использует это действие, чтобы очистить кеш, переписать правила и т. Д. Обязательно используйте соответствующие переменные для $ post_ID и $ post, конечно. Для хорошей меры вы также должны добавить:

 do_action('wp_insert_post', $post_ID, $post); 

Просто так, что любые плагины, темы и т. Д., Которые используют этот крючок, будут знать, что они делают.

Приветствия ~

Я столкнулся с той же проблемой, что и я. Я использовал wp_insert_post в обратном вызове ajax. Поле post_name закрывалось. Я в конце концов проследил его обратно, вызвав wp_publish_post вскоре после этого. Я прокомментировал публикацию и установил post_status перед вставкой, и все это работало лучше.