サポート » 使い方全般 » カテゴリ(archive.php)のページ送り

  • 解決済 blue_snow73

    (@blue_snow73)


    つい最近勉強のためWordPressを始めました。
    インストールし、元々入っているDefaultテーマを使用し作成しています。

    カテゴリ別表示を行った際、ページ送りができません。
    1ページ目しか表示されず、2ページ目以降のリンクなどもないので1ページ分しか読み込まれていないと思います。
    ただ、同じ「archive.php」を使用している月別表示では問題なくページ送りが動作しています。

    プラグイン「WP-PageNavi」を使用しており、そのプラグインを使用するとページ送りができない不具合が・・・という事例が多いと知り調べましたが変化ありませんでした。
    ただ、このプラグインが悪いのか、その他なのか確認するために
    Defaultテーマで元々記述されていた
    <div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')); ?></div>
    <div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')); ?></div>
    この関数を記述してもカテゴリ別表示では表示されませんでした。
    そのため、プラグインは原因ではないと思います。

    月別とカテゴリ別、同じ「archive.php」を使用しているというのに何故カテゴリ別ではページ送りができないのでしょうか?
    優先度的にはカテゴリ別での表示を行いたいのですが。。

    念のため、archive.phpの内容を記載したいと思います。

    <?php
    /**
     * @package WordPress
     * @subpackage Default_Theme
     */
    
    get_header();
    ?>
    
    	<div id="content" class="narrowcolumn" role="main">
    
    <?php if (have_posts()) : ?>
    
     	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
     	  <?php /* If this is a category archive */ if (is_category()) { ?>
    		<h2 class="pagetitle"><span><?php printf(__('「%s」について', 'kubrick'), single_cat_title('', false)); ?></span></h2>
     	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
    		<h2 class="pagetitle"><span><?php printf(__('Posts Tagged ‘%s’', 'kubrick'), single_tag_title('', false) ); ?></span></h2>
     	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
    		<h2 class="pagetitle"><span><?php printf(_c('Archive for %s|Daily archive page', 'kubrick'), get_the_time(__('F jS, Y', 'kubrick'))); ?></span></h2>
     	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
    		<h2 class="pagetitle"><span><?php printf(_c('Archive for %s|Monthly archive page', 'kubrick'), get_the_time(__('F, Y', 'kubrick'))); ?></span></h2>
     	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
    		<h2 class="pagetitle"><span><?php printf(_c('Archive for %s|Yearly archive page', 'kubrick'), get_the_time(__('Y', 'kubrick'))); ?></span></h2>
    	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>
    		<h2 class="pagetitle"><span><?php _e('Author Archive', 'kubrick'); ?></span></h2>
     	  <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
    		<h2 class="pagetitle"><span><?php _e('Blog Archives', 'kubrick'); ?></span></h2>
     	  <?php } ?>
    
    		<div class="navigation">
    			<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
    		</div>
    
    		<?php while (have_posts()) : the_post(); ?>
    		<div <?php post_class(); ?>>
    				<h2 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h2>
    <hr />
    				<div class="entry">
    					<?php the_content() ?>
    				</div>
    				<?php the_category(); ?>
    				<p class="postmetadata"><?php the_time('Y.m.d'); ?></p>
    			</div>
    
    		<?php endwhile; ?>
    
    		<div class="navigation">
    			<div class="alignleft"><?php next_posts_link(__('&laquo; Older Entries', 'kubrick')); ?></div>
    			<div class="alignright"><?php previous_posts_link(__('Newer Entries &raquo;', 'kubrick')); ?></div>
    			<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
    		</div>
    	<?php else :
    
    		if ( is_category() ) { // If this is a category archive
    			printf("<h2 class='center'>".__("Sorry, but there aren't any posts in the %s category yet.", 'kubrick').'</h2>', single_cat_title('',false));
    		} else if ( is_date() ) { // If this is a date archive
    			echo('<h2>'.__("Sorry, but there aren't any posts with this date.", 'kubrick').'</h2>');
    		} else if ( is_author() ) { // If this is a category archive
    			$userdata = get_userdatabylogin(get_query_var('author_name'));
    			printf("<h2 class='center'>".__("Sorry, but there aren't any posts by %s yet.", 'kubrick')."</h2>", $userdata->display_name);
    		} else {
    			echo("<h2 class='center'>".__('No posts found.', 'kubrick').'</h2>');
    		}
    	  get_search_form();
    	endif;
    ?>
    	</div>
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    お手数ですが、何卒ご助言お願いいたします。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • WP-PageNaviを停止した状態で、Defaultテーマ(Twentyfourteenでしょうか)のarchive.phpをそのまま使ったら、ページ送りが動作しますか?

    ghvst 様
    ご連絡ありがとうございます。
    WP-PageNaviを停止した状態でもページ送りは動作しませんでした。。

    Defaultテーマは「Twentyfourteen」等ではなく、ただの「Default」です。
    style.cssのNameには「WordPress Default」と記述されているものです。

    WordPressバージョン3.9でDefaultテーマをお使いですね。「1ページに表示する最大投稿数」と「ページ送りできている月別アーカイブの、その月の投稿の合計数」と「ページ送りできていないカテゴリ別アーカイブの、そのカテゴリの投稿の合計数」は、それぞれ幾つでしょう?

    ghvst 様
    お返事ありがとうございます。

    「1ページに表示する最大投稿数」:1
    「ページ送りできている月別アーカイブの、その月の投稿の合計数」:6
    「ページ送りできていないカテゴリ別アーカイブの、そのカテゴリの投稿の合計数」:6
    (テスト段階のため、テスト投稿のみ)
    としております。

    カテゴリ別アーカイブについて、私が状況を把握し損ねている気がするので確かめさせて下さい。仮にカテゴリをC1、カテゴリC1である投稿をP1からP6の6つとします。

    カテゴリC1のアーカイブページを見ると、いつでも投稿P1の一つだけが表示され(P2…P6は出てこない)、ページ送りは動作しない(ページ送り自体が表示されない)のですね。

    もう一点、1ページに表示する最大投稿数を2(または3)にすると、カテゴリC1のアーカイブページはP1,P2(3ならP1,P2,P3)を表示すると思いますが、その時もページ送りは動作しませんか?

    ghvst 様
    お返事ありがとうございます。

    > カテゴリC1のアーカイブページを見ると、いつでも投稿P1の一つだけが表示され(P2…P6は出てこない)、ページ送りは動作しない(ページ送り自体が表示されない)のですね。

    はい、その通りです。
    カテゴリページではページ送り自体表示されません。

    >1ページに表示する最大投稿数を2(または3)にすると、カテゴリC1のアーカイブページはP1,P2(3ならP1,P2,P3)を表示すると思いますが、その時もページ送りは動作しませんか?

    はい、その時にもページ送りは動作しません。
    1ページ分に読み込む記事数分しか読み込まず、ページ送りは表示されていません。

    どうぞよろしくお願いいたします。

    blue_snow73さん、実際にDefaultテーマを入れて試してみました。
    まず、プログラムとデータは次のような状態です。

    • WordPress 3.9-jaを新規インストール。
    • DefaultテーマをWordPress 2.9.2-jaからコピーしてインストール。3.9-jaにはDefaultテーマが付いていない為。
    • 新規インストールにより自動的に作られた投稿一つに加えて、5つの投稿を新規作成。
    • 6つの投稿すべてが、2014年5月。カテゴリーは「未分類」。
    • WP PageNaviは入れていません。

    この状態で、1ページに表示する最大投稿数が1の時、5の時それぞれ表示させてみました。するとトップページ(index.php)も、月別アーカイブもカテゴリー別アーカイブも、すべてページ送りが表示されました。WordPress標準の「<< 前ページへ」や「次ページへ >>」というものです。

    ghvst 様
    お返事ありがとうございます。

    わざわざ実際に試していただき、ありがとうございます!!
    私の方は手順として
    ◾wordpress-2.9.2-jaをインストール
    ◾ダッシュボード上で3.9にアップデート
    という形で3.9にしていました。

    仰ってくださった方法で再度別サーバにて行ったところ、無事にページ送りが表示されました。
    そこでわかったことが、現在テストでMySQLではなくSQLiteを使用したWordpressサイトを作成しておりました。
    ですので、今回ページ送りが動作しなかったのは、SQLiteを使用しているからかと判断いたしました。
    (上記のように、再度インストールしなおしたサーバーではMySQLでして、そこでは問題なく動作したため)

    SQLiteを使用する場合、PDO (DB:SQLite) For WordPressというプラグインをインストール前にフォルダ内に含めてFTPにアップロード
    その後問題なくWordpressをインストールできるのですが、今回不具合があったようにカテゴリ別ページではページ送りが表示されないようです。
    こちらの方法で行ってみました:http://www42.atpages.jp/~diabeties/qhm/

    SQLiteを使用した上で、このような不具合を解消する方法はございますでしょうか・・・?
    SQLの仕組みはあまり詳しくないのですが、このようなことは可能でしょうか?

    SQLiteで動作できるかを試したいので、出来ないのであればそれで仕方ないとは思っておりますが。。
    お力添えいただけると幸いです。

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

    SQLite は詳しくないのでコメントできないです・・・。

    このトピックを解決済みにして、新しくトピックを始められては如何でしょう。
    改めて多くの人に気づいてもらってコメントが頂けるのではないかと思います。
    (タイトルも工夫するとよいと思います。)

    ghvst 様
    お返事ありがとうございます。

    この度はご丁寧にありがとうございました!
    おかげで原因を突き止めることが出来ました。
    本当にお世話になりました。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「カテゴリ(archive.php)のページ送り」には新たに返信することはできません。