制作&管理しているhttp://kuulei90.com/
投稿カテゴリー「blog」「news」「photo」があります。
3つのページ全部にコメント出来るようにしてましたが、コメント出来るページを「blog」だけにしたいとの要望。
”固定ページー編集ー表示オプションーディスカッションにチェックを入れるーコメントの投稿を許可するのチェックを外す” で出来ます。簡単それだけ!
固定ページ一覧に入って「あれれ….?」photoの固定ページがない(newsとblogはある。&チェックが外れている)。photoページはサイトで表示されてるんだけど固定ページ一覧にない(なんでだ?投稿のカテゴリーにphotoはあります)。なので、今photoの固定ページをつくりました。そして、上記のように進みチェックを外しましたが、
「コメントはどうぞ」は消えません。
何か基本的に間違ってる気がしますが、分りません。
よろしくお願いします。
グローバルメニューのphoto、news、blogで表示されているのは、
どれも「各カテゴリーに該当する投稿の一覧」です。
使われるテンプレートは「category.php」で、そこにはコメント欄はありませんよね?
そこから、個別の投稿に行くと、コメント欄が表示されます。
その時に使われるテンプレートは「single.php」です。
そのコードの中で、コメント欄を表示する為の「comments_template」を呼んでいる箇所があります。
つまり、カテゴリーによって、single.phpの振る舞いを変えるようにすれば良いです。
if文を使って、その投稿がblogカテゴリーの時だけ、
「comments_template」を呼ぶ様に分岐させるのが良いでしょう。
投稿が特定のカテゴリーに属しているか調べる為のWPの条件分岐タグは「in_category」です。
あとは調べてやってみましょう。
なにやら難しそうですね。
素朴な疑問です。
blogとnewsのページは”固定ページー編集ー表示オプションーディスカッションにチェックを入れるーコメントの投稿を許可するのチェックを外す”という簡単な作業で済むのにphotoのページはphpをカスタムしなければならないのはなぜでしょうか?
真中さんは勘違いをしています。
作ったサイトの、グローバルメニューで行ける先のurlをよく良く確認しましょう。
?page_id=xxxとなっているのは「固定ページ」です。
?cat=xxxとなっているのは「そのカテゴリーに該当する投稿一覧」です。
プラグインなどを入れる前に、その点を理解した方が良いです。
本文に「何か基本的に間違ってる気がしますが、分りません。」
と書いたように、良く分らなくなっています。
最初サイトを作る際に固定ページ、投稿ページ、カテゴリー、そのあたりが良く分りませんでした。
しばらく時間をおいたら、また混乱してしまってます。
自分でもいろいろやってみますが、
次回の勉強会で、お願いします。
やらないと忘れるなあ~。
なにやらプラグイン発見。
固定ページや特定の投稿のコメント欄を非表示にするプラグイン 「One Click Close Comments」
http://jump-up.info/wordpress/plugin-oneclick-close-comments.html
入れてみたら使えそうです。
勘違いは、解決しました。
グローバルメニューにあるものは全て固定ページだと思っていました。
固定ページは、文字通り固定のページ。
kuulei90.comの場合news,blog,photoが投稿のカテゴリーでその他は固定ページ。
グローバルメニューで横一列に見えているが、みんな同じじゃないんです。
そこを勘違いしていました。、カテゴリーとして定義してあるので固定ページ一覧にあるnews,blog,photo、この3つは
不必要なので削除しました。
次にblog以外はコメント非表示にしようと思い、
/*投稿ページのコメントを非表示*/
.entry-header .comments-link {
display:none;
}
をしたら、思った通り、投稿ページ全部が非表示になりました。
blogだけは、表示させるには、やはりphpですかね?
cssだけで表示をコントロールするなら、
/*アーカイブ(一覧表示)の各投稿タイトルの下にある「X件の返信」を隠す*/
.archive #content .comments-link { display: none; }
/*ただし「blog」カテゴリーのそれは表示する*/
.archive.category-blog #content .comments-link { display: block; }
となります。
templateをいじるなら、content.phpの、
を、以下のように変えます。blogカテゴリーのスラッグが「blog」だとして、
とします。「コメントが許可されていて、かつ、カテゴリーがblogなら、」という条件に変える訳です。
単独の投稿ページのコメント欄を消したい時はsingle.phpの、
を以下のように変更します。blogカテゴリーのスラッグが「blog」だとして、
in_category()については以下を参照のこと。
http://elearn.jp/wpman/function/in_category.html
まず全体をdisplay: none;しておいて、
.archive.category-blog について、上書きすると言う事ですね。
書く順番に注意ですね。
とりあえず、安全なcssでやってみたら、出来ました。
in_category()は、今回使わなくても今後の為に勉強しておきます。
ありがとうございます。
>書く順番に注意ですね。
まあ、cssの優先度が高めてあるから大丈夫。後者のセレクタの方がクラスが1つ多いでしょ?