• いつもお世話になります。kenji190です。
    ようやく自分のサイトが完成したのですが、改良したいポイントとして
    自分で作成したページをクリックするとそのカテゴリーの一覧が表示されるように設定したいです。
    つまり
    たとえば野球というページをクリックすると野球というカテゴリーに属している記事の一覧が表示されるようにしたいのです。
    今の私の設定では、無理やりページの名前をa href”野球のカテゴリーのURL”>野球と設定して飛ばそうとしているのですが、非常に不便な設定となってしまっています。
    なぜなら、私のサイトにはページが羅列しているのですが、カテゴリーへリンクしている部分と、ページへ直接飛ぶ部分と2層になってしまっているのです。
    伝わりますか?
    希望としては、ページをクリックするとカテゴリーに属している記事がすべて羅列される設定としたいのです。
    ぜひ、ご指導賜りたくお願い申し上げます。

15件の返信を表示中 - 1 - 15件目 (全23件中)
  • ページをクリックする、というのがよく分かりません。ページへのリンクをクリックするのではなく、ページをクリックするのですか? なるべく正確な言葉で状況を説明して頂きたいです。

    なぜなら、私のサイトにはページが羅列しているのですが、カテゴリーへリンクしている部分と、ページへ直接飛ぶ部分と2層になってしまっているのです。

    これについても仰りたい内容がよく分かりません。 2 層というのは、カテゴリーのアーカイブページとページとで 2 つページが存在してしまう、ということでしょうか? 一覧が表示されるのは、カテゴリーのページ (http://example.com/category/baseball/) ではいけないのですか? あえてページを作成しなければならない理由が分かりません。

    ====

    ページをクリックするとカテゴリーの記事一覧が表示されるようにするには、 JavaScript の onClick イベントを使って、 Ajax で一覧を取得するか、予め記事一覧を display: none; などとしておいて表示されるようにすれば良いと思います。

    ====

    メニューにおいてページの一覧とカテゴリーの一覧を混在させたいという意味であれば、 wp_list_categories() と wp_list_pages() で、それぞれパラメータの include に個別の ID を与えて順番に記述すれば任意の構造に出来ます。

    ====

    単にパーマリンク構造が意に沿わないのでしたら、パーマリンクをカスタマイズするプラグインを導入されてはいかがでしょう?

    ====

    それとは別にカテゴリーの一覧が表示されるページを作成したいのであれば、ページテンプレートを作成するのが良いと思います。例えば、

    <?php
    /*
    Template Name: Category Archives
    */
    get_header();
    ?>
    <?php if ( have_posts() ) : while( have_posts() ) : the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <div class="contentBody">
    <?php the_content(); ?>
    </div>
    <?php
    $cat_obj = get_category_by_slug( $post->post_name );
    endwhile;
    ?>
    
    <?php
    $cat_query = new WP_Query('cat=' . $cat_obj->cat_ID . '&showposts=-1');
    if ( $cat_query->have_posts() ) : ?>
    <h3>「<?php echo $cat->cat_name; ?>」カテゴリーの記事一覧</h3>
    <ul class="archives">
    <?php while ( $cat_query->have_posts() ) : $cat_query->the_post(); ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    </ul>
    <? else : ?>
    <div class="noarchive">このカテゴリーの記事はまだありません。</div>
    <?php endif; ?>
    
    <?php endif; ?>
    <?php get_footer(); ?>

    というような内容のテンプレートファイルを作成し、 page-category.php というような名前で保存し、テーマのディレクトリにアップロードします。ページの編集画面のページテンプレートの欄に、
    Template Name: で設定した名前 (Category Archives) でこのページテンプレートが選択できるようになっているので、選択し、ページを保存します。

    この例では、ページのスラッグと同じ名前のカテゴリースラッグを持つカテゴリーの記事一覧が表示されるはずです。

    少しコードを訂正します。 $cat->cat_name は $cat_obj->cat_name の間違いです。
    また、 if ( $cat_query->have_posts() ) ではなく if ( $cat_obj && $cat_query->have_posts() ) とするべきでした。失礼しました。

    トピック投稿者 kenji190

    (@kenji190)

    MIZUBE様
    ご返答ありがとうございます!
    確かに正確性を書いた説明申し訳ありません。説明する言葉も浮かばないくらいの知識でしたが、確かに回答に困るないようだと反省しております。
    現状ONクリックイベントの意味が分かりませんので、それについては、これから勉強いたします。
    私は早速最後のご提案のとおり、ページテンプレートを作成してみました。
    すると確かにカテゴリーに属する記事が現れました!
    そこで質問なのですが、このようなコードでカテゴリーを表示することができるのは、ページと同じ名前のカテゴリーだけということになるのでしょうか?
    また、今回の方法だと、カテゴリーの一覧だけが羅列されている形になっているのですが、これを修正して、ページと同じ名前のカテゴリーの記事のすべての内容を表示できるようにするコードはあるのでしょうか?
    私の希望としましては、
    現状私のホームページはヘッダー部分に私の作成したページタブ?が並んでいて、読者がそのページのタブをクリックすると各ページへと飛んで行くのですが、読者がページへ飛んで行ったときに、ページと同じ名前のカテゴリーの記事が新しいものから古いものまでずらっと順番に表示されているような形式にしたいのです。記事ごとに画像つきで解説をしている関係上、一覧ではなく、記事全体が見えるようにする必要があるからです。そして、記事がすべて見えると長ったらしいので、「read more」などとして短く表示したいのです。
    可能でしょうか?
    ご指導お願いいたします。

    だいぶ問題が絞れてきましたね。ご所望の動作については onclick イベントは関係ないようですので、そこは飛ばしてくださって構いません。回答と併せ、もう少し詳細な条件が知りたいので、こちらからもいくつか質問させてください。

    そこで質問なのですが、このようなコードでカテゴリーを表示することができるのは、ページと同じ名前のカテゴリーだけということになるのでしょうか?
    また、今回の方法だと、カテゴリーの一覧だけが羅列されている形になっているのですが、これを修正して、ページと同じ名前のカテゴリーの記事のすべての内容を表示できるようにするコードはあるのでしょうか?

    今回私から提示させて頂いたコードをそのまま使用する場合は、ページのスラッグとカテゴリーのスラッグが同一である必要がありますが、具体的な条件があれば、それぞれの条件に応じたページテンプレートを個別に作成することで対応出来ます。

    read more を表示することは、多少の修正で実現できますが、それとは別の意味で、あるカテゴリーに属す投稿の内容をすべて表示するということは、ページテンプレートを利用した方法では、残念ながら少し難しいです。というのは、将来的に例えば 100 件以上の投稿の内容がすべて表示されるとなると、 1 ページのサイズが非常に大きくなってしまいますよね? この辺りについては kenji190 さんも

    記事がすべて見えると長ったらしいので、「read more」などとして短く表示したいのです。

    と書かれているように、問題として認識していらっしゃるようですが、それでもいずれは read more では対応しきれないほど大変長いページになってしまうでしょう。ですから例えば 20 件ずつ表示し、次のページ、などとして対応したいところなのですが、実は私の提示した方法は 20 件ずつ表示というようなページ送りには対応していないのです (ページの場合、ページ送りは <!– nextpage –> で区切られた内容を表示するために使用されるので)。

    そこで再度確認させて頂きたいのですが、カテゴリーのアーカイブページ http://example.com/category/baseball/ をカスタマイズし、そちらへのリンクをヘッダー部分のタブに追加する方法は取れず、あくまで http://example.com/baseball/ というページが必要なのでしょうか?

    どうしてもページが必要だというのであれば、ページ送りが上手く動くコードを考えてみなければなりませんが、必要がなければカテゴリーのアーカイブページを利用されるのが自然かなと考えます。アーカイブページではページ送りが出来ますので、カテゴリー用のテンプレート (category.php) をカスタマイズし、カテゴリースラッグと同じスラッグを持つページの内容を投稿一覧の前に表示するというアプローチで、ご希望の動作は叶えられるような気がします。

    それで構わないのでしたら、そのためのコードを再度提示します。ヘッダー部分のタブにカテゴリーのアーカイブページへのリンクを追加する方法については、ヘッダー部分のコードをご提示頂ければおそらく回答できます。

    また、 read more についてですが、表示する文字数を制限したいですか? それとも リッチエディタの more ボタン (<!– more –> タグ) で、投稿ごとに任意の位置で分割する方法を取られたいですか?

    トピック投稿者 kenji190

    (@kenji190)

    MIZUBE様
    早速のご返答とご親切なアドバイスありがとうございます。
    いくつかの方法を提示していただき、私のやりたいこと照らし合わせた結果、
    カテゴリーのアーカイブページ http://example.com/category/baseball/ をカスタマイズし、そちらへのリンクをヘッダー部分のタブに追加する方法で対応するべきだと思いました。私のやりたいことを再度まとめると、ホームページのヘッダー部分のタブを読者がクリックすると、タブと同じカテゴリーの記事が最新のものからずらっと表示されている形がBESTです。そして、その記事も全体を表示するのではなく、私がここで区切りたいと考えたところで区切り、read moreタグにて分割する方法がBESTです。そして、さらに言えば最新の記事から20くらいの記事が表示されていれば、あとはサイドバーのカテゴリー一覧を選択して記事を引っ張り出してきてもらおうと考えているので、古い記事は表示されなくてもOKです。私の記事は一つの記事が複数のカテゴリーに所属しているため、基本的には読者にカテゴリーを選択してもらって、欲しい記事を呼び出してもらうようにしたいからです。
    ただリピーター獲得を目指しているので、ひとつヘッダーのタブで最新記事を引っ張り出せるようにしたいのです。
    とするとやはりカテゴリーのアーカイブページ http://example.com/category/baseball/ をカスタマイズし、そちらへのリンクをヘッダー部分のタブに追加する方法がBESTなんですよね?
    ちなみに私のヘッダーのコードは以下のとおりです。
    たびたび申し訳ありませんが、ぜひ、チェックのほどお願いいたします。

    <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
    <html xmlns=”http://www.w3.org/1999/xhtml&#8221; <?php language_attributes(); ?>>

    <head profile=”http://gmpg.org/xfn/11″&gt;
    <meta http-equiv=”Content-Type” content=”<?php bloginfo(‘html_type’); ?>; charset=<?php bloginfo(‘charset’); ?>” />

    <title><?php bloginfo(‘name’); ?> <?php if ( is_single() ) { ?>
    » <?php
    foreach((get_the_category()) as $cat) {
    echo $cat->cat_name . ‘ ‘;
    } ?> <?php } ?>

    <?php wp_title(); ?></title>

    <meta name=”generator” content=”WordPress <?php bloginfo(‘version’); ?>” /> <!– leave this for stats –>

    <link rel=”stylesheet” href=”<?php bloginfo(‘stylesheet_url’); ?>” type=”text/css” media=”screen” />
    <link rel=”stylesheet” href=”<?php bloginfo(‘template_url’); ?>/nav.css” type=”text/css” media=”screen” />
    <link rel=”stylesheet” href=”<?php bloginfo(‘template_url’); ?>/print.css” type=”text/css” media=”print” />
    <script type=”text/javascript” src=”<?php echo bloginfo(stylesheet_directory) .’/jquery.js’; ?>”></script>
    <script type=”text/javascript” src=”<?php bloginfo(‘template_url’); ?>/js/dropdowns.js”></script>
    <script type=”text/javascript” src=”<?php echo bloginfo(stylesheet_directory) .’/tabs.js’; ?>”></script>

    <link rel=”alternate” type=”application/rss+xml” title=”<?php bloginfo(‘name’); ?> RSS Feed” href=”<?php bloginfo(‘rss2_url’); ?>” />
    <link rel=”pingback” href=”<?php bloginfo(‘pingback_url’); ?>” />

    <?php wp_head(); ?>
    </head>
    <body<?php if ( is_home() ) { ?> id=”home”<?php } ?>>
    <div id=”page” class=”clearfloat”>

    <div class=”clearfloat”>
    <div id=”branding” class=”left”>
    <h1>/”><?php bloginfo(‘name’); ?></h1>
    <div class=”description”><?php bloginfo(‘description’); ?></div>
    </div>

    <div class=”right”><?php include (TEMPLATEPATH . ‘/searchform.php’); ?></div>
    </div>

    <ul id=”nav” class=”clearfloat”>

    毎回長文での回答になってしまい申し訳ありません……。

    詳細に状況を説明していただいたおかげで、かなりの部分を把握することができたように思います。

    結論としては、最新 20 件のみを表示するのでよければ、むしろ当初のようにページを作成し、ページのスラッグ と同一のカテゴリースラッグを持つ投稿の最新 20 件を表示するページテンプレートを作成する方法 (以下 ページ方式) を採用された方が良いのではと思います。

    カテゴリーアーカイブのページをカスタマイズする方式 (以下カテゴリーアーカイブ方式) ではなくページ方式で実現する場合のメリットとしては、

    1. ヘッダー部分のカスタマイズがほぼ不要
    2. タブ項目の並びを任意にカスタマイズできる
    3. カテゴリーのアーカイブページを更に別のデザインに出来る
    4. ヘッダー部分に表示させるべき主要なカテゴリを絞れる

    などがあります。それぞれを以下に説明しますと、

    ==== 1 点目 ====
    ヘッダのタブ部分のテンプレートを wp_list_pages(‘title_li=’); から wp_list_pages(‘sort_column=menu_order&depth=1&title_li=’); とするだけで OK になります。カテゴリーと通常のページとをタブ内に混在させる場合、ここでの指定が少し複雑になるうえ、メンテナンス性が低くなり、カテゴリーやページを追加するたびに修正が必要になってしまいます。

    ==== 2 点目 ====
    上記の修正で sort_column=menu_order としたことで、ページの編集画面の「ページ順序」の項目に数値を入力することで、メニュー項目の並びを柔軟に制御できるようになります。一方、カテゴリーアーカイブ方式の場合、このような柔軟な項目の並び替えが難しくなります。ページ方式なら、アバウトやコンタクトといった項目も並べてタブで表示し、かつそれらの順位を「ページ順序」でいつでも並べ替えられるわけですね。

    ==== 3 点目 ====
    ページ方式の場合、カテゴリーのアーカイブページと別個に最新 20 件のページが存在することになります。はじめ私は同じ機能を持つ複数のページがあることを懸念していましたが、これを逆手にとり、カテゴリーのアーカイブページのデザインも別に修正し、カテゴリーのアーカイブページではトピックス形式 (リンク付きタイトルと日付のみのリストで 50 件ずつ表示など) で表示させ、そちらではより一覧性に特化させるといったことも可能になります。

    ==== 4 点目 ====
    ヘッダ部分のメニューをタブにする場合、幅の制約上、表示させられる項目数には限りがあります。

    ページ方式を採用すれば、対応するページを作成していないカテゴリーについてはタブ項目に表示されませんので、ページの作成如何で、タブにて表示すべき主要なカテゴリーを絞ることが出来ます。

    例えばメインのコンテンツの分類が「野球、サッカー、水泳、ゴルフ」の 4 つであり、それ以外のスポーツについての記事もカテゴリーを作成しサイトで扱うことはするが、あまり重要ではないのでタブ項目としては表示しなくてもよい、という場合には、対応するページを作成しなければいいわけです。

    一方、カテゴリーアーカイブ方式の場合、カテゴリーに親子関係を持たせ (野球/MLB、野球/セ・リーグ、野球/パ・リーグ など)、最上位の親カテゴリーの数でタブの項目数を調整することは出来ますが、最上位の親カテゴリーの数が 10 項目以上にわたるようなカテゴリーの構成ですと、デザインを崩してまでもタブに表示する必要はない親カテゴリーがいくつか出てきた時に、それらを選択的に取り除こうとすると、毎回 header.php のタブ部分の指定を修正する必要が生じます。

    ====

    一方、デメリットとしては前回の書き込みで挙げましたように「ページ送りが出来ない」という事が最も大きいと思われますが、これについてはそれで OK ということなので、ページ方式で read more が表示されるような修正案を提示しようと思いますが、いかがでしょう?

    トピック投稿者 kenji190

    (@kenji190)

    MIZUBE様
    ご返信ありがとうございます!
    ホントわかりやすい解説で感謝・感謝です!
    ご提案のページを作成する方法はまさに私の思っていることを形にできる方法だと確信しました。
    私自身正直ホームページ開設のときにまずテーマを探したのですが、たくさんのカテゴリーがヘッダーにタブでズラーっと出力されてしまうものはダメと判断して、テーマ選択した経緯もあります。基本的に読者がカテゴリーで必要な情報をピックアップしてくれれば良い中で、最重要のカテゴリーの記事だけページとして存在させたかったからです。
    ですからMIZUBE様の仰せの通り『メインのコンテンツの分類が「野球、サッカー、水泳、ゴルフ」の 4 つであり、それ以外のスポーツについての記事もカテゴリーを作成しサイトで扱うことはするが、あまり重要ではないのでタブ項目としては表示しなくてもよい、という場合には、対応するページを作成しなければいい』という方式がBESTです。
    私として、タブは野球、サッカーを最重要項目として表示して、それ以外のページには将来的にフラッシュで作成した一覧表とか、お客様同士が集えるフォーラムを実装していこうと考えているからです。
    そして、ページタブをクリックして進んだ先に野球の記事が最新のものから20表示され、私の任意の場所でread moreにて区切ることが出来たら・・・
    これ以上のことはありません。
    何卒よろしくお願い申し上げます。

    ページテンプレートファイルの内容を以下のようにしてみてください。記事の HTML 構造などは、お使いのテーマに合わせたものに修正する必要があります。
    対応するページスラッグとカテゴリースラッグは、出来れば英数字のみで構成されたものにしてください。

    <?php
    /*
    Template Name: Category Archives
    */
    get_header();
    ?>
    
    	<div id="content" class="narrowcolumn">
    
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
    <?php /* ページの内容も表示させたい場合はこの辺りにテンプレートを記述 */ ?>
    
    <?php
    		$showposts = trim( get_post_meta( $post->ID, 'showposts', true ) );
    		$showposts = mb_convert_kana( $showposts, 'a', get_option( 'blog_charset' ) );
    		$showposts = preg_replace( '/[^0-9]/', '', $showposts );
    		$showposts = ( empty( $showposts ) ) ? get_option( 'posts_per_page' ) : $showposts;
    
    		$cat_slug  = $post->post_name;
    		$cat_obj   = get_category_by_slug( $cat_slug );
    		$cat_query = new WP_Query( 'cat=' . $cat_obj->cat_ID . '&showposts=' . $showposts );
    
    		$postcount = min( $cat_query->found_posts, $showposts );
    ?>
    <?php endwhile; ?>
    
    <?php if ( $cat_obj && $cat_query->have_posts() ) : ?>
    
    		<!-- 最新記事部分 -->
    
    		<div class="archives">
    			<h2 class="pagetitle">「<?php echo wp_specialchars($cat_obj->cat_name, 1); ?>」カテゴリーの最新 <?php echo $postcount; ?> 件 <small>[<a href="<?php echo get_category_link($cat_obj->cat_ID); ?>">すべて表示</a>]</small></h2>
    
    <?php while ( $cat_query->have_posts() ) : $cat_query->the_post(); $more = 0; ?>
    
    			<div <?php post_class(); ?>>
    				<h3 id="post-<?php the_ID(); ?>"><?php the_title(); ?></h3>
    				<small><?php the_date(); ?></small>
    
    				<div class="entry">
    					<?php the_content('Read more &raquo;'); ?>
    				</div>
    
    				<p class="postmetadata"><?php the_tags('タグ:', ', ', ''); ?><?php printf('カテゴリー: %s', get_the_category_list(', ')); ?> | <?php edit_post_link('編集', '', ' | '); ?>  <?php comments_popup_link('コメントなし »', '1 件のコメント »', '% 件のコメント »', '', 'コメントできません' ); ?>
    
    			</div><!-- .entry -->
    
    <?php endwhile; ?>
    
    		</div><!-- .post -->
    
    <?php else : ?>
    
    		<!-- 該当記事なし -->
    
    		<div class="archives">
    			<h2>「<?php echo wp_specialchars($cat_obj->cat_name, 1); ?>」カテゴリーの最新記事</h2>
    			<div <?php post_class(); ?>>
    				<div class="entry">
    					<p class="noentry">このカテゴリーの記事はまだありません。</p>
    				</div>
    			</div>
    		</div><!-- .archives -->
    
    <?php endif; ?>
    
    <?php endif; ?>
    
    	</div><!-- .narrowcolumn -->
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    ちなみに、サイドバー ( sidebar.php ) にて、このページテンプレートを使った場合のサイドバーの表示を専用にカスタマイズされたい場合には、 is_page_template( ‘(ページテンプレートのファイル名)’ ) という条件分岐タグが使用できます。

    このページテンプレートを page-category.php という名前で保存された場合は、 sidebar.php 内に以下のように記述すれば OK です。

    <?php if ( is_page_template( 'page-category.php' ) ) : ?>
    <!-- このページテンプレートを使用した場合のサイドバーの内容をここに記述 -->
    <?php endif; ?>

    このページテンプレートの使い方につきましてはこれまでの書き込みにて説明したとおりです。ヘッダ部分の修正もお忘れなく。

    PHP 5.2.6, WordPress 2.7-ja, Default テーマでの動作を確認しました。
    もしもお使いの環境で上手く動作しない場合には、お手数ですが詳しい状況を添えてその旨ご報告いただけますでしょうか。

    トピック投稿者 kenji190

    (@kenji190)

    MIZUBE様
    ありがとうございます!
    一部分補足お願いしたいのですが、よろしいでしょうか?
    ①ページスラッグとカテゴリースラッグを同じにしたため、ページタブをクリックすると
    見出しがカテゴリー名 新着〇件と出ているのですが、
    その下、記事の部分?に
    <divとだけ表示されています。
    これはどうしてでしょうか?

    ② <?php /* ページの内容も表示させたい場合はこの辺りにテンプレートを記述 */ ?>
    ここでいうテンプレートとはpage.phpをコピペする意味・・・ではないですよね?
    具体的にどういう意味でしょうか?いろいろ試したのですが・・・
    うまく表示できません。
    これがうまくいくと今 <div と表示されている部分にカテゴリースラッグが同じ記事がすべて表示されるのでしょうか?

    ③<!– このページテンプレートを使用した場合のサイドバーの内容をここに記述 –>
    これについても、sideber.phpをコピペしたり、いろいろ試したのですが何も変化がおきなかったり、サイドバーごと消えてしまったりしております。
    もう少し簡単になれば、言い換えていただいてもよろしいでしょうか?

    本当に申し訳ありません。。。

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

    ==== 1 点目 ====

    ページスラッグとカテゴリースラッグを同じにしたため、ページタブをクリックすると
    見出しがカテゴリー名 新着〇件と出ているのですが、
    その下、記事の部分?に
    <divとだけ表示されています。
    これはどうしてでしょうか?

    失礼しました。これは WordPress 2.7 の Default テーマを元にテンプレートを作成したためです。 <?php post_class(); ?> の部分が 2.6 では未定義なので、すべて削除する必要があります。その上で、お使いのテーマに合わせて HTML 構造を修正してください。

    ==== 2 点目 ====

    <?php /* ページの内容も表示させたい場合はこの辺りにテンプレートを記述 */ ?>
    ここでいうテンプレートとはpage.phpをコピペする意味・・・ではないですよね?

    それは、そのページの本文やタイトルを記述したい場合はその辺りに

    <h2><?php the_title(); ?></h2>
    <div><?php the_content(); ?></div>

    のようにテンプレートを記述してください、という意味でした。カテゴリーについての説明や、イメージ画像を本文に貼り付けて使用したりするケースを想定していました。必要がなければ無視してください。

    ==== 3 点目 ====

    <!– このページテンプレートを使用した場合のサイドバーの内容をここに記述 –>
    これについても、sideber.phpをコピペしたり、いろいろ試したのですが何も変化がおきなかったり、サイドバーごと消えてしまったりしております。

    カスタマイズの基本事項については WordPress Codex 日本語版などで調べてください。何もご存じない場合には、下手に手を出さない方がよいかもしれません。私も何から説明していいのか分かりませんし。特に必要がなければ無視してください。条件分岐タグについての補足は完全に蛇足だったようですね、申し訳ありません。

    ====

    それから訂正です。

    $showposts = trim( get_post_meta( $post->ID, 'showposts', true ) );
    $showposts = mb_convert_kana( $showposts, 'a', get_option( 'blog_charset' ) );
    $showposts = preg_replace( '/[^0-9]/', '', $showposts );
    $showposts = ( empty( $showposts ) ) ? get_option( 'posts_per_page' ) : $showposts;

    この部分はカスタムフィールドにて showposts キーの値で表示件数を制御するためのコードなのですが、ここを

    $showposts = trim( get_post_meta( $post->ID, 'showposts', true ) );
    $showposts = mb_convert_kana( $showposts, 'a', get_option( 'blog_charset' ) );
    $showposts = preg_replace( '/[^0-9]/', '', $showposts );
    $showposts = ( empty( $showposts ) ) ? 20 : $showposts;

    とするか

    $showposts = 20;

    に変更してお使いください。

    トピック投稿者 kenji190

    (@kenji190)

    MIZUBE様
    ありがとうございます!
    私、まったくわからない知識だったので、昨日PHPの本を一冊購入してまいりました。
    今回教わっている内容も含めて、確実に自分の中に吸収したいと考えております。
    今回のご回答に関しましても、的外れなことを何度も発言してしまい、申し訳ありません。
    恥ずかしい限りです。。。

    さて、MIZUBE様の仰せのとおりにコードを修正しました。
    ようやく記事が20件ページに反映され、かつすべて表示をクリックすると
    カテゴリーに所属する記事が一覧で表示される形になることができました。

    あとは、記事にread moreを入れたい場合のプラグインなどが配布されているようですのでそれを利用して、記事更新に励んでいきたいと考えています。

    お忙しい中本当にありがとうございました!
    MIZUBE様に心より感謝申し上げます!!!

    あれれ、 read more は表示されませんか? こちらでも 2.6.5 での動作を確認してみます。すみません。

    トピック投稿者 kenji190

    (@kenji190)

    そうですね。でてないです。
    出るはずなのですね。

    申し訳ありません。
    末永くお願いいたします^^

    私の環境では、 WordPress 2.6.5 でも問題なく read more が表示されました。

    失礼ですが、このページ以外の、カテゴリーのアーカイブページやトップページなどでは、各投稿に ちゃんと read more が表示されている状態なのでしょうか?

    ==== 表示されている場合 ====
    WordPress のバージョンは 2.6.5 でしょうか? それ以下であれば、詳細なバージョンを教えてください。それから、お使いのテーマと配布元の URL を教えてください。

    出来れば、お使いのプラグインを一度すべて無効にし、その状態でページテンプレートを使用したページで read more が表示されるかどうかを確認してみてください。それでもしうまくいくようでしたら、何らかのプラグインと衝突している可能性があります。一つずつプラグインを有効にしながら原因となっているプラグインを特定し、プラグイン名と配布元の URL を教えて頂ければ解決の糸口になるかと思います。

    ==== 表示されていない場合 ====
    まずは本文を more タグで区切る必要があります。

    本文の編集に「ビジュアル」エディタを使用している場合は、「リンクの解除」ボタンの右隣にある Insert More tag というポップアップの出るボタンを押すことで挿入できます。 一方、「HTML」エディタを使用されている場合には、任意の場所に <!--more--> と記述してください。

    すると more タグの挿入箇所に read more のリンクが表示され、以降の本文が省略されます。

    追記です。ページ本文を無視して良いならば以下のようにもう少しシンプルに出来ますね。

    <?php
    /*
    Template Name: Category Archives
    */
    $slug = get_query_var( 'pagename' );
    $show = 20;
    $cobj = get_category_by_slug( $slug );
    $more = 0;
    get_header();
    ?>
    
    	<div id="content" class="narrowcolumn">
    
    <?php query_posts( 'post_type=post&cat=' . $cobj->cat_ID . '&showposts=' . $show ); ?>
    <?php if ( $cobj && have_posts() ) : ?>
    		<h2 class="pagetitle"><?php echo wp_specialchars( $cobj->cat_name, 1 ); ?> カテゴリーの最新記事 <?php echo min( $show, $wp_query->found_posts ); ?> 件 <small>(<a href="<?php echo get_category_link( $cobj->cat_ID ); ?>">View All</a>)</small></h2>
    <?php while ( have_posts() ) : the_post(); ?>
    		<div class="post">
    			<h3><?php the_title(); ?></h3>
    			<div class="entry">
    <?php the_content( 'Read more &raquo;' ); ?>
    			</div>
    		</div>
    
    <?php endwhile; ?>
    <?php elseif ( $cobj ) : ?>
    		<h2 class="pagetitle">「<?php echo wp_specialchars( $cat_obj->cat_name, 1 ); ?>」カテゴリーの最新記事</h2>
    		<div class="post">
    			<p class="noarchive">投稿はまだありません。</p>
    
    		</div>
    <?php else : ?>
    		<h2 class="pagetitle">ページエラー</h2>
    		<div class="post">
    			<p class="noarchive">対応するカテゴリーが見つかりません。</p>
    
    		</div>
    <?php endif; ?>
    
    	</div>
    
    <?php get_sidebar(); ?>
    
    <?php get_footer(); ?>

    こちらでどうでしょうか?

    # 以降の返信は三が日が明けてからになります。良いお年を。

15件の返信を表示中 - 1 - 15件目 (全23件中)
  • トピック「ページからカテゴリーへリンクさせる」には新たに返信することはできません。