サポート » 使い方全般 » カスタム投稿タイプでcomments_templateは使えない?

  • 解決済 haruka

    (@harlequin_wp)


    CODEXでcomments_template関数についての説明に、

    Loads the comment template. For use in single post and Page displays.

    とあります。
    これは、通常の「投稿」(single.php)と「ページ」(page.php)にのみ使えるという意味で、つまりカスタム投稿タイプの個別記事(single-○○○.php)には使えないという意味なのでしょうか?

    galleryという名前のカスタム投稿タイプがあり、その個別記事を表示するためにsingle.phpを複製しsingle-gallery.phpを作り、内容をカスタマイズしていたのですが、ふとコメントフォームが表示されていない事に気がつきました。

    通常の投稿の個別記事(single.php)では、コメントフォームが表示されています。

    カスタマイズの過程でどこか削ってしまったのかな?と思い、試しにsingle.phpを再度複製し、今度はそれをsingle-gallery.phpにリネームしただけで、内容は変更しないで確認してみましたら、これでもコメントフォームが表示されません。

    これは、前述のように関数の仕様なのか、それとも別なところで何か間違っているのでしょうか?

    そして仕様の場合、カスタム投稿タイプの個別記事でコメントフォームを表示させるには、single-gallery.phpにcomment_formテンプレートタグを記述するという方法になりますか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • haruka

    (@harlequin_wp)

    半分、自己解決しました。
    関数の仕様ではありませんでした。失礼いたしました。

    管理画面の「設定」>「ディスカッション」で、「新しい投稿へのコメントを許可する」を有効にしていれば、カスタム投稿タイプでの投稿でもデフォルトで「コメントを受け付ける」の設定で投稿されるものと思い込んでいました。

    galleryでは常にコメントを受け付けるため、投稿の際に個別に無効にする必要が無いので、register_post_typeの’supports’の設定で、’comments’は付けていませんでした。
    この設定を付けて、既存の記事を編集画面で開くと、ディスカッションパネルの「コメントの投稿を許可する。」のチェックが入ってませんでした。
    これをチェックして、記事を更新すると、single-gallery.phpでコメントフォームが表示されました。
    この後で再度’comments’を外しても、上記で更新した記事にはコメントフォームが表示されました。

    しかし、前述しましたように、投稿の際に個別にコメントの設定を変更する必要が無いので、ディスカッションパネルを表示させずにデフォルトでコメントフォームを表示させたいのですが、方法はありますか?

    コメントを受け付ける場合、supportsのcommentsは必須だと思います。
    関数リファレンス/register_post_type – Codex 日本語版
     

    ‘comments’ (編集画面でコメント数バルーンが見える)

     
    ドキュメントにあるように、一覧画面でバルーンでコメント数が表示される共に、投稿・編集画面の表示オプションでディスカッションの表示の有無を変更できるようになります。
    表示オプションの設定は同じユーザーでログインすれば、次回以降も有効ですので、単に非表示にしておいてはいかがでしょうか?(ユーザーごとにデータベースに保存されているようです。)
     
    javascriptを使用して、表示オプションの[ディスカッション]を非表示にすることも出来ます。
    次のコードでは、既存の投稿の[ディスカッション]メタボックスも非表示にします。
    functions.php

    function add_admin_myscripts() {
    ?>
    <script type="text/javascript">
    jQuery(function($) {
    	$('label[for=commentstatusdiv-hide], .meta-box-sortables > div#commentstatusdiv').hide();
    })
    </script>
    <?php
    }
    add_action('admin_print_footer_scripts', 'add_admin_myscripts');

    haruka

    (@harlequin_wp)

    popupさん、回答ありがとうございます!

    なるほど。’supports’の設定で’comments’を付けなければいけないんですね。
    そうした上で、remove_meta_box()でディスカッションパネルを非表示にしてみたりもしたのですが、そうするとやっぱりコメントフォームは表示されなかったので、とにかくサーバーサイドではディスカッションパネルを表示させる設定にしてないとダメってことのようですね…。

    popupさんが回答下さったようにJavaScriptか、もしくはCSSで非表示設定にする方法にしたいと思います。

    ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタム投稿タイプでcomments_templateは使えない?」には新たに返信することはできません。