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

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

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

PHP

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

Q&A

解決済

1回答

1827閲覧

ワードプレスでトップページを最新の投稿にした場合にコメント欄を表示させたい

oka02

総合スコア15

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/02/04 01:24

編集2019/02/04 07:15

前提・実現したいこと

ワードプレスでトップページの設定を固定ページでなく、最新の投稿を表示させています。
個別ページに出てくるコメント欄をトップ下にも表示させたいです。
すみませんが、よろしくお願いいたします。

テーマ:Twenty Seventeen2.0

発生している問題・エラーメッセージ

<?php comments_template(); ?> これをindex.phpに入力しても、コメント欄が表示されません。 呼び出し方法が間違っているのでしょうか。 逆に、comments.phpのコードをコピーして直に書き込んでみたところ、表示はされるのですが、 試しにコメントを入力してみましたが、入力したコメントが別のページに表示されてしまいトップページに溜まらない状態です。

該当のソースコード

<?php get_header(); ?> <div class="wrap"> <?php if ( is_home() && ! is_front_page() ) : ?> <header class="page-header"> <h1 class="page-title"><?php single_post_title(); ?></h1> </header> <?php else : ?> <header class="page-header"> <h2 class="page-title"><?php _e( 'Posts', 'twentyseventeen' ); ?></h2> </header> <?php endif; ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : /* 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/post/content', get_post_format() ); endwhile; the_posts_pagination( array( 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>', ) ); else : get_template_part( 'template-parts/post/content', 'none' ); endif; ?> <?php comments_template(); ?><!-- ここに表示させたいです --> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer(); ーーーーーーーーーー↓↓↓追記後↓↓↓ーーーーーーーーーー <?php get_header(); ?> <div class="wrap"> <?php if ( is_home() && ! is_front_page() ) : ?> <header class="page-header"> <h1 class="page-title"><?php single_post_title(); ?></h1> </header> <?php else : ?> <header class="page-header"> <h2 class="page-title"><?php _e( 'Posts', 'twentyseventeen' ); ?></h2> </header> <?php endif; ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : /* 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/post/content', get_post_format() ); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) : comments_template(); endif; endwhile; the_posts_pagination( array( 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>', ) ); else : get_template_part( 'template-parts/post/content', 'none' ); endif; ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();

試したこと

・ワードプレス管理画面で、ディスカッション表示させ、全てのページでコメント許可にしています。
・一般>ディスカッション設定も許可状態になっています。
・管理画面>カスタマイズ>ホームページ設定>最新の投稿を選択しています。
・下から8行目にコメントのphpを入れてみたのですが表示されません。

補足情報(FW/ツールのバージョンなど)

ワードプレスver、4.9.9
テーマ:Twenty Seventeen2.0

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

comments_template()関数はループ内でコールする必要がありますので、
single.phpを参考に
get_template_part( 'template-parts/post/content', get_post_format() );
の直下あたりに記述してください。

しかしながら、comments_template()関数は関数内で表示できる場所を制限しているので、
トップページにはコメントは表示しないようになっています。

なので、目的を満たすためにはコメント表示関数を自作する必要があります。
wp-includes\comment-template.php
を参考にfunctions.php等に実装してください。

投稿2019/02/04 01:50

tabuu

総合スコア2449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oka02

2019/02/04 07:13

ご教授いただきありがとうございます。 途中の箇所にsingle.phpの呼び出し方を参考に入れました。 (該当のソースコードに追記しております) また、自作に関して知識不足で申し訳ないのですが、 現在4記事が最新の投稿としてトップページに表示されていて、 その各記事の下にコメント欄がそれぞれ表示されるようにする為に、 functions.phpに実装について、wp-includes\comment-template.phpを見てみたのですが、具体的にどういった実装をfunctions.phpに行えばよろしいのでしょうか。
tabuu

2019/02/04 23:18

あまり良い実装方法ではありませんが、 functions.phpにmy_comments_template()といような名称でcomments_template()関数 をそのままコピーして、 冒頭の以下のif文を削除すればとりあえずはトップにも表示されるようになります。 if ( !(is_single() || is_page() || $withcomments) || empty($post) ) return;
oka02

2019/02/11 07:27

ご連絡遅くなり申し訳ありません。 現状あるcomment-template.phpのバックアップをとって、教えていただいた if ( !(is_single() || is_page() || $withcomments) || empty($post) ) return; の箇所をコメントアウトして削除し、 index.phpのget_template_part( 'template-parts/post/content', get_post_format() );下にsingle.phpのコメント呼び出しをコピペしたところ、 最新の投稿でもうまく全ての投稿に対してコメントが表示されるようになりました。 この度はご教授いただきまして、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問