質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • PHP

    20912questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7470questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Wordpressのカスタム投稿タイプ(+カスタムタクソノミーも)をプラグインに頼らず利用したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 557

cotton88

score 77

wordpressのカスタム投稿タイプ(+カスタムタクソノミーも)をプラグインに頼らず利用したいと思い、以下をfunction.phpに書きました。

ですが、カスタム投稿一覧・記事ページにて、カスタムタクソノミーの情報(カテゴリーやタグ)の情報が出てきません。
お知恵をお貸しください…。

//function.phpに書いたコード
// カスタム投稿タイプを作成する
add_action('init', 'add_websites_post_type');
function add_websites_post_type() {
    $params = array(
      'labels' => array(
        'name' => 'サイト',
        'singular_name' => 'サイト',
        'add_new' => '新規追加',
        'add_new_item' => 'サイトを新規追加',
        'edit_item' => 'サイトを編集する',
        'new_item' => '新規サイト',
        'all_items' => 'サイト一覧',
        'view_item' => 'サイトの説明を見る',
        'search_items' => '検索する',
        'not_found' => 'サイトが見つかりませんでした。',
        'not_found_in_trash' => 'ゴミ箱内にサイトが見つかりませんでした。'
      ),
      'menu_position' => 5,
      'public' => true,
      'has_archive' => true,
      'exclude_from_search' => true,
      'rewrite' => array(
      'slug' => 'websites',
      'with_front' => false
    ),
      'supports' => array(
            'title', //(タイトル)
            'editor', //(内容の編集)
            'author', //(作成者)
            'thumbnail', //(アイキャッチ画像。現在のテーマが post-thumbnails をサポートしていること)
            'excerpt', //(抜粋)
            'trackbacks', //(トラックバック送信)
            'custom-fields', //(カスタムフィールド)
            'comments', //(コメントの他、編集画面にコメント数のバルーンを表示する)
            'revisions', //(リビジョンを保存する)
            'page-attributes', //(メニューの順序。「親〜」オプションを表示するために hierarchical が true であること)
            'post-formats', //(投稿のフォーマットを追加。投稿フォーマットを参照)
      ),
      'taxonomies' => array('websites_category','websites_tag')
    );
    register_post_type('websites', $params);
}
// カスタム投稿タイプ(websites)用のカテゴリ&タグを作成する
add_action('init', 'create_websites_taxonomies');
function create_websites_taxonomies() {
  // カテゴリを作成
  $labels = array(
      'name'                => 'Webカテゴリ',        //複数系のときのカテゴリ名
      'singular_name'       => 'Webカテゴリ',        //単数系のときのカテゴリ名
      'search_items'        => 'Webカテゴリを検索',
      'all_items'           => '全てのWebカテゴリ',
      'parent_item'         => '親カテゴリ',
      'parent_item_colon'   => '親カテゴリ:',
      'edit_item'           => 'Webカテゴリを編集',
      'update_item'         => 'Webカテゴリを更新',
      'add_new_item'        => '新規Webカテゴリを追加',
      'new_item_name'       => '新規Webカテゴリ',
      'menu_name'           => 'Webカテゴリ'        //ダッシュボードのサイドバーメニュー名
  );
  $args = array(
    'hierarchical'        => true,
    'labels'              => $labels,
    'rewrite'             => array( 'slug' => 'websites_cat' )
  );
  register_taxonomy( 'websites_category', 'websites', $args );

  // タグを作成
  $labels = array(
    'name'                => 'Webタグ',        //複数系のときのタグ名
    'singular_name'       => 'Webタグ',        //単数系のときのタグ名
    'search_items'        => 'Webタグを検索',
    'all_items'           => '全てのWebタグ',
    'parent_item'         => null,
    'parent_item_colon'   => null,
    'edit_item'           => 'Webタグを編集',
    'update_item'         => 'Webタグを更新',
    'add_new_item'        => '新規Webタグを追加',
    'new_item_name'       => '新規Webタグ',
    'separate_items_with_commas'   => 'Webタグをコンマで区切る',
    'add_or_remove_items'          => 'Webタグを追加or削除する',
    'choose_from_most_used'        => 'よく使われているWebタグから選択',
    'not_found'                    => 'アイテムは見つかりませんでした',
    'menu_name'                    => 'Webタグ'        //ダッシュボードのサイドバーメニュー名
  );
  $args = array(
    'hierarchical'            => false,
    'labels'                  => $labels,
    'update_count_callback'   => '_update_post_term_count',    //タグの動作に必要なCallback設定
    'rewrite'                 => array( 'slug' => 'websites_tag' )
  );

  register_taxonomy( 'websites_tag', 'websites', $args );
}
//一覧ページなどに書いたコード
<?php the_terms($post->ID,'websites'); ?>

追記-------------------------------------------
※テーマは、underscoreをカスタマイズして利用しています。

//archive.php
<?php
get_header(); ?>

    <div id="primary" class="content-area col-md-8">
        <main id="main" class="site-main" role="main">

        <?php
        if ( have_posts() ) : ?>

            <header class="page-header">
                <?php
                    the_archive_title( '<h1 class="page-title">', '</h1>' );
                    the_archive_description( '<div class="taxonomy-description">', '</div>' );
                ?>
            </header><!-- .page-header -->

            <?php
            /* Start the Loop */
            while ( have_posts() ) : the_post();

                /*
                 * Include the Post-Format-specific template for the content.
                 * If you want to override this in a child theme, then include a file
                 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                 */
                get_template_part( 'template-parts/content', get_post_format() );

            endwhile;

            the_posts_navigation();

        else :

            get_template_part( 'template-parts/content', 'none' );

        endif; ?>

        </main><!-- #main -->
    </div><!-- #primary -->

<?php
get_sidebar();
get_footer();
//content.php
<?php

?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header">
        <?php
            if ( is_single() ) {
                the_title( '<h1 class="entry-title">', '</h1>' );
            } else {
                the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' );
            }

//これが出ない。
wp_list_categories('title_li=&taxonomy=websites');

        if ( 'post' === get_post_type() ) : ?>
        <div class="entry-meta">
            <?php hogehoge_posted_on(); ?>
        </div><!-- .entry-meta -->
        <?php
        endif; ?>
    </header><!-- .entry-header -->

    <div class="entry-content">
        <?php
            the_content( sprintf(
                /* translators: %s: Name of current post. */
                wp_kses( __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'hogehoge' ), array( 'span' => array( 'class' => array() ) ) ),
                the_title( '<span class="screen-reader-text">"', '"</span>', false )
            ) );

            wp_link_pages( array(
                'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'hogehoge' ),
                'after'  => '</div>',
            ) );
        ?>
    </div><!-- .entry-content -->

    <footer class="entry-footer">
        <?php hogehoge_entry_footer(); ?>
    </footer><!-- .entry-footer -->
</article><!-- #post-## -->

よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2016/04/28 10:57

    カスタムタクソノミーは管理画面では確認・登録できるのでしょうか。また、一覧ページのコードについて、ループの中の記述でしょうか。質問に追記いただければと思います。

    キャンセル

  • cotton88

    2016/04/28 12:40

    ご質問ありがとうございます。 >カスタムタクソノミーは管理画面では確認・登録か 回答:はい、サイドメニューにも、投稿画面のカテゴリ・タグ選択項目が表示されております。 ループの件は追記させていただきました。

    キャンセル

回答 1

checkベストアンサー

0

こうでは?

wp_list_categories('title_li=&taxonomy=websites_category,websites_tag');

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • PHP

    20912questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    7470questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • トップ
  • PHPに関する質問
  • Wordpressのカスタム投稿タイプ(+カスタムタクソノミーも)をプラグインに頼らず利用したい