首页 文章

如何在WP中为自定义帖子类型设置默认分类法(类别)

提问于
浏览
2

我已经阅读了我能找到的每篇博文,但似乎没有什么对我有用 . 我需要做的就是让WP自动为我的自定义帖子类型“照片”分配默认分类/类别(“最新”),这样当用户添加新照片时,“最新”类别已被选中,已分配(例如正常博客帖子的“未分类”) .

declare ( encoding = 'UTF-8' );

! defined( 'ABSPATH' ) and exit;

add_action( 'init', array ( 'MCP_Photos', 'init' ) );

class MCP_Photos
{
    /**
     * Creates a new instance.
     * 
     * @wp-hook init
     * @see    __construct()
     * @return void
     */
    public static function init()
    {
        new self;
    }

    /**
     * Constructor
     */
    public function __construct()
    {
      $labels = array(
    'name' => 'Photography',
    'singular_name' => 'Photo',
    'add_new' => 'Add New',
    'add_new_item' => 'Add New Photo',
    'edit_item' => 'Edit Photo',
    'new_item' => 'New Photo',
    'all_items' => 'All Photos',
    'view_item' => 'View Photo',
    'search_items' => 'Search Photos',
    'not_found' =>  'No Photos found',
    'not_found_in_trash' => 'No Photos found in Trash', 
    'parent_item_colon' => '',
    'menu_name' => 'Photography'
  );

        $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'show_in_menu' => true, 
    'query_var' => true,
            'rewrite' => array(
                'with_front' => false,
                'slug' => "photo"
            ),
     'capability_type' => 'post',
    'has_archive' => true, 
    'hierarchical' => true,
    'menu_position' => null,
    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
    'taxonomies' => array('post_tag')
        );
        register_post_type("photos", $args);

        // Prevent WordPress from sending a 404 for our new perma structure.
        add_rewrite_rule(
        '^photo/(\d+)/[^/]+/?$',
        'index.php?post_type=photos&p=$matches[1]',
        'top'
        );

        // Inject our custom structure.
        add_filter( 'post_type_link', array ( $this, 'fix_permalink' ), 1, 2 );
    }

    /**
     * Filter permalink construction.
     * 
     * @wp-hook post_type_link
     * @param  string $post_link default link.
     * @param  int    $id Post ID
     * @return string
     */
    public function fix_permalink( $post_link, $id = 0 )
    {
        $post = &get_post($id);
        if ( is_wp_error($post) || $post->post_type != 'photos' )
        {
            return $post_link;
        }
        // preview
        empty ( $post->slug )
            and $post->slug = sanitize_title_with_dashes( $post->post_title );

        return home_url(
            user_trailingslashit( "photo/$post->ID/$post->slug" )
        );
    }
}



// ----------------------------- add photography categories taxonomy ---------------------------------- 


function create_photo_categories() {
    register_taxonomy(
        'photography', // name of the taxonomy
        'photos', // for which post type it applies
        array(
            'labels' => array(
                'name' => 'Categories',
                'add_new_item' => 'Add New Category',
                'new_item_name' => "New Category"
            ),
            'show_ui' => true,
            'show_tagcloud' => false,
            'hierarchical' => true
        )
    );
}

add_action( 'init', 'create_photo_categories', 0 );

3 回答

  • 0

    Look for something like this in your register_post_type function's $args -- >

    taxonomies => array('categories');
    

    Remove It

    To register taxonomies for your custom post type use function

    Register Taxonomy

  • -1

    添加这样的分类法..

    'taxonomies' => array('timeline','category',),
    

    管理员的总代码变为这样:

    // Admin
                'capability_type' => 'post',
                'menu_icon'     => 'dashicons-businessman',
                'menu_position' => 10,
                'query_var'     => true,
                'show_in_menu'  => true,
                'show_ui'       => true,
                'taxonomies' => array('timeline','category',),
                'supports'      => array(
                'title',
                'editor',
                'custom_fields',
                'timeline',
                ),
    
  • 0

    编辑 wp-includes/taxonomy.php 并将自定义帖子类型名称写为 'custom post name here'

    http://img.prntscr.com/img?url=http://i.imgur.com/wl7VVjT.png http://img.prntscr.com/img?url=http://i.imgur.com/wl7VVjT.png

相关问题