当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「カテゴリーテンプレート」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(Examples)
(Modifying How Posts are Displayed)
75行目: 75行目:
 
</pre>
 
</pre>
  
== Modifying How Posts are Displayed ==
+
== 記事の表示方法を編集する ==
  
=== Excerpts vs. Full Posts ===
+
=== 抜粋か、記事全体か ===
  
Perhaps you are looking to cut down on the size of your Category pages.  You could do this by displaying excerpts rather than the entire content of each Post. To do this, you will just need to find where it says <tt style="font-weight:bold; color:#036">[[Template Tags/the_content|the_content()]]</tt> inside [[The Loop]] in your Template, and replace it with <tt style="font-weight:bold; color:#036">[[Template Tags/the_excerpt|the_excerpt()]]</tt>. These will most likely be inside PHP tags:
+
カテゴリーページのサイズを減らしたいことがあるでしょう。個々の投稿の記事全文を表示するのではなく、抜粋を表示することができます。この場合、テンプレートの [[The Loop]] 内の <tt style="font-weight:bold; color:#036">[[テンプレートタグ/the_content_the_content()]]</tt> を探しだし、<tt style="font-weight:bold; color:#036">[[テンプレートタグ/the_excerpt|the_excerpt()]]</tt> に置き換えてください。たいていは PHP タグの内部にあります。
 
<pre>
 
<pre>
 
   <?php the_excerpt(); ?>
 
   <?php the_excerpt(); ?>
86行目: 86行目:
 
</pre>
 
</pre>
  
Conversely, if your Theme is currently displaying excerpts and you want full posts, replace <tt>the_excerpt</tt> with <tt>the_content</tt>.
+
逆に、現在は抜粋を表示しているが、記事全文を表示したい場合は、<tt>the_excerpt</tt> <tt>the_content</tt> に置き換えてください。
  
=== Display Images Linking to Full Posts ===
+
=== 記事へのリンクを画像にする ===
  
Another thing that is interesting to do in a category archive page is to replace the post content with an image that links to your post. To do this, you will first need to put images into the Excerpt sections of your posts. Here's how to do that, for one post:
+
おもしろいことに、カテゴリーアーカイブページでは、記事の代わりに、記事へのリンク画像を表示する、といったこともできます。記事の抜粋セクションに、画像を置きます。1 つの記事にたいして以下を行います。
# Upload an image on the post editing screen.
+
# 記事編集画面で画像をアップロードする。
# Switch to the "Code" editor, rather than the "Visual" editor.
+
# ビジュアルエディタから HTML エディタへ変更する。
# Use the Uploads / Browse tab to insert the image into your post. Make sure to insert the full-sized image, with no link.
+
# 「アップロード/挿入」で画像を挿入する。フルサイズの画像か確認する。
# Copy the inserted HTML <tt>img</tt> tag, and paste it into the "Optional Excerpt" section of the post editing screen.
+
# 挿入された HTML <tt>img</tt> タグをコピーし、記事編集画面の「抜粋」に貼り付ける。
# Finish writing the post content (you can remove the image), and publish the post.
+
# コンテンツを書いたら(コンテンツから画像は取り除いて良い)、記事を公開する。
  
Now you will need to modify your template. We'll use a trick: the [[Template Tags/the_excerpt_rss|the_excerpt_rss()]] Template Tag does not put a paragraph tag around the excerpt. So we can use it to insert the <tt>img</tt> HTML and put it inside a link. Here's what you need to put into your Template, in place of using <tt>the_content</tt>:
+
さらに、テンプレートを修正する必要があります。次のようなトリックを使います。[[テンプレートタグ/the_excerpt_rss|the_excerpt_rss()]] テンプレートタグは抜粋に段落タグを追加しません。これを利用して <tt>img</tt> HTML に挿入し、リンクにすることができます。<tt>the_content</tt> の代わりに、以下のように記述します。
 
<pre>
 
<pre>
 
<a href="<?php the_permalink() ?>">
 
<a href="<?php the_permalink() ?>">
104行目: 104行目:
 
</pre>
 
</pre>
  
Caveat: using the excerpt this way '''may''' effect your RSS feed, because it places an img tag in the excerpt, instead of text. So if you are going to do this, you probably want to set your options so that the full posts are put in RSS feeds, rather than excerpts.
+
警告: 抜粋に、テキストではなく img タグを挿入することになるので、RSS フィードに影響する可能性があります。これを行う場合は、RSS フィードには、抜粋ではなく記事全文を表示するように設定したほうが良いでしょう。
  
 
=== What categories do you show to the visitors? ===
 
=== What categories do you show to the visitors? ===
  
You can limit the categories in archive and other pages with this code:
+
以下のコードを用いると、アーカイブや他のページで表示するカテゴリーを制限することができます。
 
<pre>
 
<pre>
 
<?php query_posts('cat=1&showposts='.get_option('posts_per_page')); ?>
 
<?php query_posts('cat=1&showposts='.get_option('posts_per_page')); ?>
 
</pre>
 
</pre>
This is placed before the Loop.
+
ループの前に置いてください。
You find more info about the query_posts() function parameters here: http://codex.wordpress.org/User:JamesVL/query_posts .
+
query_posts() 関数のパラメータについては、 http://codex.wordpress.org/User:JamesVL/query_posts をごらんください。
The <tt>get_option('posts_per_page')</tt> part of the code uses your blog's options to show a limited number of posts.
+
コードの <tt>get_option('posts_per_page')</tt> は、ブログオプションの表示する記事数です。
  
This code is very useful if you would like to separate  the categories. With this code you can make multiple archives. For example:
+
このコードは、カテゴリーを分離したい場合に役立つでしょう。複数のアーカイブを作ることができます。例えば、以下のようにします。
 
<pre>
 
<pre>
 
<?php if (have_posts()) : ?>
 
<?php if (have_posts()) : ?>
127行目: 127行目:
 
<?php endif; ?>
 
<?php endif; ?>
 
</pre>
 
</pre>
If you use this code in <tt>archive.php</tt> and navigate to <tt>http://yourblog.com/2008/02/</tt>, show you the <tt>admin</tt> user's post that is posted on 2008.02. in the "first" category.
+
<tt>archive.php</tt> でこのコードを使用し、<tt>http://yourblog.com/2008/02/</tt> を表示すると、管理者ユーザーが 2008 年 2 月に投稿したカテゴリー 1 の記事が表示されます。
  
 
= Related =
 
= Related =

2009年8月25日 (火) 19:04時点における版

はじめに

WordPress 1.5 でテーマが登場してから、WordPress サイトのルックアンドフィールを変更するのが簡単になりました。例えば、訪問者があなたのブログのカテゴリーのいずれかをクリックすると、特定のカテゴリーの投稿を時系列に沿って(新しい投稿が上に、古い投稿が下に)一覧表示します。表示方法にはいろいろな選択肢があります。全文を表示するか、抜粋のみにするか、また追加の情報(タイトル、著者、投稿日、最終更新、等)を表示するか等です。テーマによって表示方法は異なりますし、それらを変更したいこともあるでしょう。

本記事では、訪問者が、あなたのブログのカテゴリーページを訪問したときの動作を変更する方法を解説します。テーマおよびテンプレートファイルの使い方も含まれます。テンプレートファイルについて良く知らない場合は、テーマの使い方テンプレート入門 をまず読む方が良いかもしれません。

どんなテンプレートファイルが使用されているか?

カテゴリーページを訪問したときの表示を変更するには、まず、テーマファイルのどれが使われるかを理解する必要があります。テンプレート階層 と呼ばれています。

カテゴリーの場合、階層は比較的単純です。例えば、問題のカテゴリーの ID が 6 だとします。テンプレート階層は、テーマディレクトリ内に、以下のリストで最初に見つかったテンプレートファイルを使用するように指定します。

  1. category-6.php
  2. category.php
  3. archive.php
  4. index.php

つまり、category-6.php が存在しなければ、WordPress は category.php を探します。以下同様です。

ID が 6 のカテゴリーの表示方法を現在の表示から(そして、他のカテゴリーページの表示と異なるように)変更したい場合、category-6.php ファイルを作成してください。カテゴリーアーカイブを他のアーカイブ(日付アーカイブや著者アーカイブ等)と異なる表示にしたい場合は、category.php ファイルを作成/変更します。 すべてのアーカイブページの表示を変更したい場合は、archive.php ファイルを作成/変更します。index.php ファイルを変更すると、ブログ全体に影響します。

新しいファイルを作成する必要があるときは、次の階層のファイルをコピーするのが良いでしょう。例えば、カテゴリー 6 に特別な表示をしたい場合は、category.php ファイルをコピーすることから始めます。category.php が存在しなければ archive.php を使います。

カテゴリーページの見栄えを編集するには、テーマディレクトリのどのテンプレートファイルを編集すれば良いかについて、理解できたことでしょう。では例を見てみましょう。これらの例で「テンプレートファイルを編集する」という文言は、上のセクションで選択したファイルを編集することを意味します。

カテゴリーページにテキストを追加する

投稿の上に固定テキスト

カテゴリーページの投稿一覧の前に、固定テキストを表示する場合を考えてみましょう。ここで「固定」は、どのような記事が表示される場合でも、どのカテゴリーが表示される場合でも、テキストが変化しないことを意味します。 やり方: The_Loop セクションの上に、以下のコードを挿入します。

<p>
This is some text that will display at the top of the Category page.
</p>

カテゴリーによって異なるテキスト

もう少し複雑なものとして、訪問者の閲覧するカテゴリーページによって、異なるテキストを表示する場合を考えてみます。Then you would add the "default" text to the main category.php ファイルに、デフォルトのテキストを追加し、特定のテキストを必要とするカテゴリー各々に category-#.php ファイルを作成します。

この方法は、テーマディレクトリにたくさんのファイルを作成します。ループの外側に以下のコードを挿入することで、たくさんのファイルを作成することが避けられます。

<?php if (is_category('Category A')) { ?>
<p>This is the text to describe category A</p>
<?php } elseif (is_category('Category B')) { ?>
<p>This is the text to describe category B</p>
<?php } else { ?>
<p>This is some generic text to describe all other category pages, 
I could be left blank</p>
<?php } ?>

このコードは以下のことを行います。カテゴリーA を見ているか調べ、カテゴリーA を見ていれば最初のテキストを表示する。そうでなければ、カテゴリーB を見ているか調べ、カテゴリーB を見ていればそこ(This is the text to describe category B) を表示する。もしカテゴリーA でもカテゴリーB でも無い場合は、デフォルトテキストを表示する。

アーカイブの最初のページにだけテキストを表示する

もし、カテゴリーに 1 ページに表示する投稿数(ブログの管理パネルで設定可能)以上の投稿がある場合は、カテゴリーアーカイブは複数のページに分割されます。アーカイブの最初のページにだけ固定テキストを表示したい場合や、2ページ目以降で他のテキストを表示したい場合もあるでしょう。

この場合は、PHP if 文を使用して、WordPress 変数 $paged の値を調べますWordPress variable ($paged はページ番号です。最初のページは 1、次のページは 2、等です)。複雑に思えるかもしれませんが、思ったほどではありません。The Loop に以下を追加するだけです。

<?php if ( $paged < 2 ) { ?>
<p>Text for first page of Category archive.</p>
<?php } else { ?>
<p>Text for subsequent pages of Category.
Can be left out.</p>
<?php } ?>

カテゴリー名

カテゴリー名をページ上部に表示することもできます。テンプレートに記述されていることもありますが、そうでない場合は、The Loop の上に以下を追加します。

<p>Category: <?php single_cat_title(); ?></p>

記事の表示方法を編集する

抜粋か、記事全体か

カテゴリーページのサイズを減らしたいことがあるでしょう。個々の投稿の記事全文を表示するのではなく、抜粋を表示することができます。この場合、テンプレートの The Loop 内の テンプレートタグ/the_content_the_content() を探しだし、the_excerpt() に置き換えてください。たいていは PHP タグの内部にあります。

  <?php the_excerpt(); ?>
and
  <?php the_content(); ?>

逆に、現在は抜粋を表示しているが、記事全文を表示したい場合は、the_excerptthe_content に置き換えてください。

記事へのリンクを画像にする

おもしろいことに、カテゴリーアーカイブページでは、記事の代わりに、記事へのリンク画像を表示する、といったこともできます。記事の抜粋セクションに、画像を置きます。1 つの記事にたいして以下を行います。

  1. 記事編集画面で画像をアップロードする。
  2. ビジュアルエディタから HTML エディタへ変更する。
  3. 「アップロード/挿入」で画像を挿入する。フルサイズの画像か確認する。
  4. 挿入された HTML img タグをコピーし、記事編集画面の「抜粋」に貼り付ける。
  5. コンテンツを書いたら(コンテンツから画像は取り除いて良い)、記事を公開する。

さらに、テンプレートを修正する必要があります。次のようなトリックを使います。the_excerpt_rss() テンプレートタグは抜粋に段落タグを追加しません。これを利用して img を HTML に挿入し、リンクにすることができます。the_content の代わりに、以下のように記述します。

<a href="<?php the_permalink() ?>">
<?php the_excerpt_rss(); ?>
</a>

警告: 抜粋に、テキストではなく img タグを挿入することになるので、RSS フィードに影響する可能性があります。これを行う場合は、RSS フィードには、抜粋ではなく記事全文を表示するように設定したほうが良いでしょう。

What categories do you show to the visitors?

以下のコードを用いると、アーカイブや他のページで表示するカテゴリーを制限することができます。

<?php query_posts('cat=1&showposts='.get_option('posts_per_page')); ?>

ループの前に置いてください。 query_posts() 関数のパラメータについては、 http://codex.wordpress.org/User:JamesVL/query_posts をごらんください。 コードの get_option('posts_per_page') は、ブログオプションの表示する記事数です。

このコードは、カテゴリーを分離したい場合に役立つでしょう。複数のアーカイブを作ることができます。例えば、以下のようにします。

<?php if (have_posts()) : ?>
 <?php if (is_month()) {query_posts('year='.get_the_time('Y').'&monthnum='.get_the_time('m').'&author_name=admin&cat=1&showposts='.get_option('posts_per_page')); ?>
  <!-- Do stuff... ->
 <?php } ?>
 <?php while (have_posts()) : the_post(); ?>
  <!-- post's contents -->
 <?php endwhile; ?>
<?php endif; ?>

archive.php でこのコードを使用し、http://yourblog.com/2008/02/ を表示すると、管理者ユーザーが 2008 年 2 月に投稿したカテゴリー 1 の記事が表示されます。

Related

カテゴリー: the_category(), the_category_rss(), single_cat_title(), category_description(), wp_dropdown_categories(), wp_list_categories(), get_the_category(), get_the_category_by_ID(), get_category_by_slug(), get_the_category_list(), get_category_parents(), get_category_link(), is_category(), in_category()


関数リファレンステンプレートタグ目次もご覧ください。


Further Reading

最新英語版: WordPress Codex » Category_Templates最新版との差分