サポート » 使い方全般 » 複数のカスタム投稿タイプ

  • 解決済 dxc555

    (@dxc555)


    テーマ内のfunctions.phpにこのように書き、動作は正常なのですが同じ様に
    リンク用のカスタム投稿タイプを追加したく、下記の「info」を「link」に
    変えて書いたのですが、新着情報の一覧をみるとカテゴリーがおかしいです。

    新着情報のカスタム投稿タイプの場合、カテゴリーはこのように表示されます。
    お知らせ

    しかし、リンク用のカスタム投稿タイプを追加するとこのように表示されます。
    お知らせなし

    明らかにリンク用のカスタム投稿タイプで、カテゴリー名を取得する関数も
    同時に実行されているようなのですが、この場合どうすればいいのでしょうか?

    // 新着情報投稿タイプ
    function info_custom_post_type()
    {
        $labels = array(
            'name'               => _x('新着情報', 'post type general name'),
            'singular_name'      => _x('新着情報', 'post type singular name'),
            'add_new'            => _x('新着情報を追加', 'info'),
            'add_new_item'       => __('新しい新着情報を追加'),
            'edit_item'          => __('新着情報を編集'),
            'new_item'           => __('新しい新着情報'),
            'view_item'          => __('新着情報を編集'),
            'search_items'       => __('新着情報を探す'),
            'not_found'          => __('新着情報はありません'),
            'not_found_in_trash' => __('ゴミ箱に新着情報はありません'),
            'parent_item_colon'  => '',
        );
    
        $args = array(
            'labels'             => $labels,
            'public'             => true,
            'publicly_queryable' => true,
            'show_ui'            => true,
            'query_var'          => true,
            'rewrite'            => true,
            'rewrite'            => array(true, 'with_front' => false),
            'capability_type'    => 'post',
            'hierarchical'       => false,
            'menu_position'      => 5,
            'has_archive'        => true,
            'supports'           => array('title', 'editor'),
            'taxonomies'         => array('info_category'),
        );
    
        register_post_type('info', $args);
    
        $args = array(
            'label'        => '情報カテゴリー',
            'public'       => true,
            'show_ui'      => true,
            'hierarchical' => true,
        );
    
        flush_rewrite_rules(false);
    
        register_taxonomy('info_category', 'info', $args);
    }
    add_action('init', 'info_custom_post_type');
    
    function manage_posts_info_columns($columns)
    {
        $columns['fcategory'] = "カテゴリー";
        return $columns;
    }
    
    function add_info_column($column_name, $post_id)
    {
        if( 'fcategory' == $column_name ) {
            $fcategory = get_the_term_list($post_id, 'info_category');
        }
    
        if ( isset($fcategory) && $fcategory ) {
            echo $fcategory;
        } else {
            echo __('None');
        }
    }
    add_filter('manage_edit-info_columns', 'manage_posts_info_columns');
    add_action('manage_posts_custom_column', 'add_info_column', 10, 2);
    
    // リンク投稿タイプ
    function link_custom_post_type()
    {
        $labels = array(
            'name'               => _x('リンク', 'post type general name'),
            'singular_name'      => _x('リンク', 'post type singular name'),
            'add_new'            => _x('リンクを追加', 'link'),
            'add_new_item'       => __('新しいリンクを追加'),
            'edit_item'          => __('リンクを編集'),
            'new_item'           => __('新しいリンク'),
            'view_item'          => __('リンクを編集'),
            'search_items'       => __('リンクを探す'),
            'not_found'          => __('リンクはありません'),
            'not_found_in_trash' => __('ゴミ箱にリンクはありません'),
            'parent_item_colon'  => '',
        );
    
        $args = array(
            'labels'             => $labels,
            'public'             => true,
            'publicly_queryable' => true,
            'show_ui'            => true,
            'query_var'          => true,
            'rewrite'            => true,
            'rewrite'            => array(true, 'with_front' => false),
            'capability_type'    => 'post',
            'hierarchical'       => false,
            'menu_position'      => 5,
            'has_archive'        => true,
            'supports'           => array('title', 'editor'),
            'taxonomies'         => array('link_category'),
        );
    
        register_post_type('link', $args);
    
        $args = array(
            'label'        => 'カテゴリー',
            'public'       => true,
            'show_ui'      => true,
            'hierarchical' => true,
        );
    
        flush_rewrite_rules(false);
    
        register_taxonomy('link_category', 'link', $args);
    }
    add_action('init', 'link_custom_post_type');
    
    function manage_posts_link_columns($columns)
    {
        $columns['dcategory'] = "カテゴリー";
        return $columns;
    }
    
    function add_link_column($column_name, $post_id)
    {
        if( 'dcategory' == $column_name ) {
            $dcategory = get_the_term_list($post_id, 'link_category');
        }
    
        if ( isset($dcategory) && $dcategory ) {
            echo $dcategory;
        } else {
            echo __('None');
        }
    }
    add_filter('manage_edit-link_columns', 'manage_posts_link_columns');
    add_action('manage_posts_custom_column',  'add_link_column', 10, 2);
  • トピック「複数のカスタム投稿タイプ」には新たに返信することはできません。