Intereting Posts
Скрытие родительской темы Удаление меню «Мои сайты» от администратора Включен Javascript, но функция alert () не работает Форма поиска не работает с пользовательским запросом? Запросы с текущего года WordPress со всеми wp_content / или загружает / на внешний сервер? Плагин MailPress: удалена таблица встроенного стиля при отправке информационного бюллетеня Как WordPress помнит, какой редактор используется? Включить тему, если это режим совместимости / quirks? Как перенаправить пользователя на страницу после отправки формы Отдельно по категории Тип публикации Плагин переводчика WordPress: Инструменты Google для веб-мастеров показывают сотни 404 не найденных ошибок. Как очистить беспорядок? Пытался создать роль пользователя, которая может только редактировать информацию пользователя, но моя тестовая учетная запись не может просматривать панель. Что мне не хватает? Могу ли я определить несколько папок на одной странице? Обзор сайта с помощью WordPress

wp_insert_post создает несколько страниц

У меня есть функция в functions.php, которая автоматически создает страницу. Он не проверяет, есть ли в данный момент страница с тем же названием.

Функция запускается с:

add_action( 'after_setup_theme', 'add_pages' ); 

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

add_action( 'init', 'add_pages' );

Вот код в функции дополнительных страниц:

 function add_pages() { $content = "text content"; $page = array( 'post_title' => 'A unique title?', 'post_content' => $content, 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'post_parent' => 0 ); // Add page $insert_id = wp_insert_post( $page ); } 

Когда я перезагружаю страницу «posts» в WordPress admin, создаются две новые страницы. Когда я перезагружаюсь снова, создаются четыре новые страницы. Когда я перезагружаюсь снова, создается целая куча страниц. Мне было интересно, есть ли объяснения для этого?

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

Я намерен проверить, существует ли название страницы, но я все равно хотел понять это поведение.

Solutions Collecting From Web of "wp_insert_post создает несколько страниц"

after_setup_theme – это не тот крючок, который вы ищете – вы хотите after_switch_theme – этот крючок будет запускаться только один раз, когда ваша тема будет активирована.

Ниже приведен код, он не будет создавать страницу, если заголовок уже существует:

 function add_pages() { $content = "text content"; $postTitle = 'A unique title?'; global $wpdb; $query = $wpdb->prepare( 'SELECT ID FROM ' . $wpdb->posts . ' WHERE post_title = %s AND post_type = \'page\'', $postTitle ); $wpdb->query( $query ); if ( $wpdb->num_rows ) { // Title already exists } else { $page = array( 'post_title' => 'A unique title?', 'post_content' => $content, 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'post_parent' => 0 ); // Add page $insert_id = wp_insert_post( $page ); } }