Получение списка пользовательских типов сообщений

Я использую следующие две полосы кода, чтобы получить список категорий (1-й код), а затем отобразить их в меню выбора (2-й код) для моей страницы параметров темы. Мне было интересно, как я могу изменить этот код, чтобы сделать то же самое, но вместо этого получить собственные типы сообщений?

Код, используемый для извлечения категорий

$tp_categories[0] = array( 'value' => 0, 'label' => '' ); $tp_cats = get_categories(); $i = 1; foreach( $tp_cats as $tp_cat ) : $tp_categories[$tp_cat->cat_ID] = array( 'value' => $tp_cat->cat_ID, 'label' => $tp_cat->cat_name ); $i++; endforeach; 

Код, используемый для отображения категорий в выпадающем меню выбора

 <tr valign="top"><th scope="row"><label for="choose_cat">Choose Category</label></th> <td> <select id="choose_cat" name="tp_options[choose_cat]"> <?php foreach ( $tp_categories as $category ) : $label = $category['label']; $selected = ''; if ( $category['value'] == $settings['choose_cat'] ) $selected = 'selected="selected"'; echo '<option style="padding-right: 10px;" value="' . esc_attr( $category['value'] ) . '" ' . $selected . '>' . $label . '</option>'; endforeach; ?> </select> </td> </tr> 

Solutions Collecting From Web of "Получение списка пользовательских типов сообщений"

Для этого есть основная функция: get_post_types() :

 <?php get_post_types( $args, $output, $operator ); ?> 

Например, чтобы возвращать общедоступные пользовательские типы сообщений по имени:

 $custom_post_types = get_post_types( array( // Set to FALSE to return only custom post types '_builtin' => false, // Set to TRUE to return only public post types 'public' => true ) ); 

Используйте get_post_types() или глобальную переменную $wp_post_types .

Из wp-includes/post.php :

 /** * Get a list of all registered post type objects. * * @package WordPress * @subpackage Post * @since 2.9.0 * @uses $wp_post_types * @see register_post_type * * @param array|string $args An array of key => value arguments to match against the post type objects. * @param string $output The type of output to return, either post type 'names' or 'objects'. 'names' is the default. * @param string $operator The logical operation to perform. 'or' means only one element * from the array needs to match; 'and' means all elements must match. The default is 'and'. * @return array A list of post type names or objects */ function get_post_types( $args = array(), $output = 'names', $operator = 'and' ) { global $wp_post_types; $field = ('names' == $output) ? 'name' : false; return wp_filter_object_list($wp_post_types, $args, $operator, $field); }