Как назначить категорию странице, когда оба создаются при инициировании темы?

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

Я добавил следующий код к моим functions.php , и как категория, так и страница успешно созданы. Тем не менее, нет автоматического назначения категории для вновь созданной страницы. Я полагаюсь на плагин Add Categories To Pages для этой функции, и я подозреваю, что поэтому он не работает должным образом

 // let's create some stuff on init if (isset($_GET['activated']) && is_admin()) //check for init { // create categories if (file_exists (ABSPATH.'/wp-admin/includes/taxonomy.php')) { require_once (ABSPATH.'/wp-admin/includes/taxonomy.php'); if (!get_cat_ID('plants')) {wp_create_category('plants');} } // create pages if (get_page_by_title('potato') == NULL) //check if page exists { $new_page_title = 'potato'; $post_cat = get_term_by('name', 'plants', 'category'); $post_cat = $post_cat->term_id; $new_page_content = 'coming soon'; //$new_page_template = 'template-page-with-subnav.php'; $post_parent = ''; $page_check = get_page_by_title($new_page_title); $new_page = array( 'post_type' => 'page', 'post_category' => $post_cat, 'post_title' => $new_page_title, 'post_content' => $new_page_content, 'post_status' => 'publish', 'post_author' => 1, 'post_parent' => $post_parent, ); if(!isset($page_check->ID)) { $new_page_id = wp_insert_post($new_page); if(!empty($new_page_template)) {update_post_meta($new_page_id, '_wp_page_template', $new_page_template);} } } } 

После активации темы у меня есть ожидаемая категория и страница, но нет ссылки между ними.

выяснил, как выполнить мою задачу:

 // function to fetch tag ID from name function get_tag_ID($tag_name) { $tag = get_term_by('name', $tag_name, 'post_tag'); if ($tag) { return $tag->term_id; } else { return NULL;} } // add categories & tag taxonomy to pages register_taxonomy_for_object_type( 'category', 'page' ); register_taxonomy_for_object_type( 'post_tag', 'page' ); // let's create some stuff on init if (isset($_GET['activated']) && is_admin()) //check for init { // create categories & tags if (file_exists (ABSPATH.'/wp-admin/includes/taxonomy.php')) { require_once (ABSPATH.'/wp-admin/includes/taxonomy.php'); // categories $check = get_cat_ID('plants'); if(empty($check)) {wp_create_category('plants');} $check = get_cat_ID('animals'); if(empty($check)) {wp_create_category('animals');} //tags $check = get_tag_ID('tall'); if (empty($check)) {wp_create_tag('tall');} $check = get_tag_ID('short'); if (empty($check)) {wp_create_tag('short');} } // create pages $new_page_title = 'carrot'; // define PAGE TITLE $new_page_cat = 'plants'; // define PAGE CATEGORY $new_page_tag = array('tall'); // define PAGE TAGS $page_check = get_page_by_title($new_page_title); if(!isset($page_check->ID)) // verify new page is unique { $new_page = array( 'post_type' => 'page', 'post_title' => $new_page_title, 'post_content' => 'more coming soon', 'post_status' => 'publish', 'post_author' => 1, 'post_parent' => '', ); $post_cat = get_term_by('name', $new_page_cat, 'category'); $post_cat = $post_cat->term_id; $new_page_cat = array($post_cat); $new_page_id = wp_insert_post($new_page); // create page wp_set_post_categories( $new_page_id,$new_page_cat, true ); // set category wp_set_post_tags( $new_page_id,$new_page_tag, true ); // set tags } } 

@Milo, спасибо за вашу помощь 🙂

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

после активации темы вы можете использовать функцию get_tag_ID () в другом месте WP.

Страницы теперь будут регистрироваться как для таксономий категорий, так и для тегов , хотя для обеспечения обменных курсов администратора потребуется кодирование или плагин .

веселит.