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 ); } }