Проблема с добавлением таксономии в пользовательский тип сообщения с использованием функции

Используя WordPress 3.7.1 и PHP 5.4.12, я пытаюсь добавить пользовательский тип сообщения и таксономию к моей теме, пока используется метод пользовательских почтовых сообщений, но таксономия не добавляется в панель управления администратора.

Вот код, который у меня есть:

<?php function add_post_type($name, $args = array()) { add_action('init', function() use($name, $args) { $upper = ucwords($name); $name = strtolower(str_replace(' ','_',$name)); $args = array_merge( array( 'public'=> true, 'label' => "All $upper" . 's', 'labels' => array('add_new_item' => "Add New $upper"), 'support' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments') ), $args ); register_post_type('$name', $args); }); } function add_taxonomy($name, $post_type, $args = array()) { $name = strtolower($name); add_action('init', function() use($name, $post_type, $args) { $args = array_merge( array( 'label' => ucwords($name), ), $args ); register_taxonomy($name, $post_type, $args); }); } add_post_type('book', array( 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments') )); add_taxonomy('fun', 'book'); ?> 

Не могли бы вы сообщить мне, в какой части я делаю неправильно?

Это то, что я использую для создания новой пользовательской таксономии для моих пользовательских типов сообщений. И это работает для меня.

 function fun_book() { // Add new "Fun" taxonomy to Book Post Type register_taxonomy('fun', 'book', array( // Hierarchical taxonomy (like categories) 'hierarchical' => true, // This array of options controls the labels displayed in the WordPress Admin UI 'labels' => array( 'name' => _x( 'Fun', 'taxonomy general name' ), 'singular_name' => _x( 'Fun', 'taxonomy singular name' ), 'search_items' => __( 'Search Locations' ), 'all_items' => __( 'All Fun' ), 'parent_item' => __( 'Parent Fun' ), 'parent_item_colon' => __( 'Parent Fun:' ), 'edit_item' => __( 'Edit Fun' ), 'update_item' => __( 'Update Fun' ), 'add_new_item' => __( 'Add New Fun' ), 'new_item_name' => __( 'New Fun Name' ), 'menu_name' => __( 'Fun' ), ), // Control the slugs used for this taxonomy 'rewrite' => array( 'slug' => 'Fun', // This controls the base slug that will display before each term 'with_front' => false, // Don't display the category base before "/locations/" 'hierarchical' => true // This will allow URL's like "/locations/boston/cambridge/" ), )); } add_action( 'init', 'fun_book', 0 ); 

Я действительно надеюсь, что это поможет!

Чтобы повторить мой комментарий (соединение CPT и таксономии ), вы должны разрешить зарегистрированный доступ к таксономии через аргумент функции register_post_type следующим образом:

 <?php function add_post_type($name, $args = array()) { add_action('init', function() use($name, $args) { $upper = ucwords($name); $name = strtolower(str_replace(' ','_',$name)); $args = array_merge( array( 'public'=> true, 'label' => "All $upper" . 's', 'labels' => array('add_new_item' => "Add New $upper"), 'support' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'), //Add the taxonomy "fun" to this post type 'taxonomies' => array('fun'), ), $args ); //Remove quotes from the $name variable register_post_type($name, $args); }); } function add_taxonomy($name, $post_type, $args = array()) { $name = strtolower($name); add_action('init', function() use($name, $post_type, $args) { $args = array_merge( array( 'label' => ucwords($name), ), $args ); register_taxonomy($name, $post_type, $args); }); } add_post_type('book', array( 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments') )); add_taxonomy('fun', 'book');