サポート » 使い方全般 » アーカイブのページ送り

  • 解決済 au1000

    (@au1000)


    度々失礼します。

    フォーラムでページ送りの投稿が沢山ありましたが
    条件が違うようでしたので投稿させていただきます。

    下記の内容でアーカイブページを作成していますが
    ページ送りができずに困っています。

    ・ページ送りがエラーとなるページ
    exsample.com/infomation/page/2/ 等
    ※infomationは投稿>>カテゴリより作成したスラッグ名
    ・テンプレート名:archive.php
    ・パーマリンク:カスタム構造 /%category%/%postname%/
    ・表示設定:1ページに表示する最大投稿数5件に設定

    exsample.com/infomation/ は表示
    またinfomation配下のカテゴリである
    exsample.com/category/infomation/update/
    exsample.com/category/infomation/update/page/2/
    も表示されます。

    表示設定で設定を-1にする切り抜けがあるようですが
    できれば上記の方法(○件表示)でお願いいたします。

    また、ページネーションはYuriko.netさんをそのまま使用しています。

    <div class="tablenav"><?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    	$paginate_format = '';
    	$paginate_base = add_query_arg('paged', '%#%');
    } else {
    	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    	user_trailingslashit('page/%#%/', 'paged');;
    	$paginate_base .= '%_%';
    }
    echo paginate_links( array(
    	'base' => $paginate_base,
    	'format' => $paginate_format,
    	'total' => $wp_query->max_num_pages,
    	'mid_size' => 5,
    	'current' => ($paged ? $paged : 1),
    )); ?></div>

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

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    archive.phpの記述がどうなってるかというのがポイントっぽいので
    そっちも開示いただけると助かりまーす!

    トピック投稿者 au1000

    (@au1000)

    >>mypacecreator さん

    archive.phpのコードは以下になります。

    <?php get_header(); ?>
    
    <div id="contents" class="clearfix">
    	<div id="main">
    
    <!-- if 投稿が存在するかを確認する条件文 *1 -->
            <?php if (have_posts()) : ?>
    
    <!-- 投稿一覧の最初を取得 -->
           <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
    <!-- カテゴリーアーカイブの場合 *2 -->
           <?php /* If this is a category archive */ if (is_category()) { ?>
    <!-- カテゴリー名を表示 -->
            <h2 class="pagetitle"><?php printf(__(' ‘%s’ 投稿一覧', 'kubrick'), single_cat_title('', false)); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- タグアーカイブの場合 *2 -->
           <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
    <!-- タグ名を表示 -->
            <h2 class="pagetitle"><?php printf(__('Posts Tagged ‘%s’', 'kubrick'), single_tag_title('', false) ); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- 日別アーカイブの場合 *2 -->
           <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
    <!-- 年月日を表示 -->
            <h2 class="pagetitle"><?php printf(_c(' %s|Daily archive page', 'kubrick'), get_the_time(__('Y年 F jS', 'kubrick'))); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- 月別アーカイブの場合 *2 -->
           <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
    <!-- 年月を表示 -->
            <h2 class="pagetitle"><?php printf(_c(' %s|Monthly archive page', 'kubrick'), get_the_time(__('Y年 F', 'kubrick'))); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- 年別アーカイブの場合 *2 -->
           <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
    <!-- 年を表示 -->
            <h2 class="pagetitle"><?php printf(_c('Archive for %s|Yearly archive page', 'kubrick'), get_the_time(__('Y', 'kubrick'))); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- 著者アーカイブの場合 *2 -->
          <?php /* If this is an author archive */ } elseif (is_author()) { ?>
    <!-- 著者を表示 -->
            <h2 class="pagetitle"><?php _e('Author Archive', 'kubrick'); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- 複数ページになるアーカイブの場合 *2 -->
           <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
    <!-- ブログアーカイブを表示 -->
            <h2 class="pagetitle"><?php _e('Blog Archives', 'kubrick'); ?> <?php
    if ( have_posts() ) :
      my_result_count();  // ここで表示
      while ( have_posts() ) :
        the_post();
        /* do stuff */
      endwhile;
    else :
      /* Nothing Found */
    endif; ?></h2>
    <!-- *2 の終了 -->
           <?php } ?>
    
    <!-- 投稿データを取得するループ *3 -->
            <?php while (have_posts()) : the_post(); ?>
    <!-- the_ID() は 記事の ID -->
    <!-- the_permalink() は 記事の URL -->
    <!-- the_title_() は 記事のタイトル出力 -->
                    <h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
    <!-- 年月日を表示 -->
     <div class="sectionBorder2"><div id="archive_meta"><ul>
    <li><span class="date post_calendar"><?php the_time('Y年m月d日') ?></span><span class="post_category"><?php
    foreach((get_the_category()) as $cat) {
    $cat_id = $cat->cat_ID ;
    break ;
    }
    $category_link = get_category_link( $cat_id );
    ?>
    <a href="<?php echo $category_link; ?>" title="<?php echo $cat->cat_name; ?>"><?php echo $cat->cat_name; ?></a></span>
    <span class="post_comments"><a href="<?php comments_link(); ?>"><?php comments_number('コメント0件', 'コメント1件', 'コメント%件');?></a></span>
    <?php if ( is_user_logged_in() == TRUE ) : edit_post_link('編集', '<span class="edit-link">[ ', ' ]</span>');endif ?>
    </li>
    </ul></div>
    
    <!-- the_content() は 本文を表示する -->
                      <?php the_content() ?></div>
    <!-- the_tags() は タグを表示する -->
    <!-- get_the_category_list() は カテゴリを表示する : the_category() の別名? -->
    <!-- edit_post_link() は 投稿を編集するためのリンクを表示する (ログイン中のみ) -->
    <!-- comments_popup_link() はコメントをポップアップ表示する -->
                    <!--<div id="date"><?php the_tags(__('Tags:', 'kubrick'), ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?>  <?php comments_popup_link(__('No Comments »', 'kubrick'), __('1 Comment »', 'kubrick'), __('% Comments »', 'kubrick'), '', __('Comments Closed', 'kubrick') ); ?><br /><br /></div>-->
    
    <!-- *3 の終わり -->
            <?php endwhile; ?>
    
    <!-- ページナビを表示 -->
    <div class="tablenav"><?php global $wp_rewrite;
    $paginate_base = get_pagenum_link(1);
    if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    	$paginate_format = '';
    	$paginate_base = add_query_arg('paged', '%#%');
    } else {
    	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
    	user_trailingslashit('page/%#%/', 'paged');;
    	$paginate_base .= '%_%';
    }
    echo paginate_links( array(
    	'base' => $paginate_base,
    	'format' => $paginate_format,
    	'total' => $wp_query->max_num_pages,
    	'mid_size' => 5,
    	'current' => ($paged ? $paged : 1),
    )); ?></div>
    <!-- *1 が成り立たない場合 -->
        <?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(); ?>

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

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    あ、お使いのテーマが何なのか、配布されているものなのかどうかを聞いたほうが早かったです。
    詳しくはこちらを→問題解決のためのチェックリスト

    コードをチラ見しただけなので、まだあまり詳しく読み込んでないんですが
    ループ内にあるmy_result_count();という関数と変数とかバッティングしてたりしないかなーと。
    これってWordPressの関数じゃなくて自作だと思うんですが、
    そのへんと干渉してたりしないか一応確認してみてください。
    (意味がわからない場合は該当部分を一旦削除してください)

    あと、このテンプレ、
    ・カテゴリーアーカイブの場合
    ・タグアーカイブの場合
    ・年別アーカイブの場合
    などといくつも条件分岐してるんですがそれぞれ
    category.php, tag.php, date.php など、テンプレート階層に沿って分けたほうがいいような気はします。

    こういうときのトラブルシューティングの鉄則として、問題の部分以外のif文とか処理を全部省いたシンプルなテーマでどうなるのかというチェックは必須です。
    このテーマのままだと記述が多すぎて問題がわかりづらいと思いますので、
    if文とか他の独自関数とかいったん消してためしてみましょう。

    トピック投稿者 au1000

    (@au1000)

    階層に分けるですか。。。
    購入したテンプレートですので、こういうものだと思っていました。

    my_result_count();あたりは私の方で色々参考に付け足したものですが
    根本的なところは知識がないので難しいです。
    ですので、まずは階層分けに参考になるサイトをまずは探してみます。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    有償テンプレートの場合ですと、回答者側が同じテーマを入手できないのと、
    販売者の独自カスタマイズが入っている場合が多いので、なかなかフォーラムだけだと難しいケースもあります。
    どうしても解決しない場合、購入元のサポート(有償サポートの場合もあります)に問い合わせてみるのが得策かと思います。

    トピック投稿者 au1000

    (@au1000)

    >>mypacecreator さん

    ありがとうございます。
    お教えいただいた通り、階層を分けコードをすっきりさせました。
    その後、my_result_count();の箇所を削除しましたが
    やはり、2ページ目の送りが404となってしまいます。

    有償ですが、ベースはここのコードのようで特に特別な処理はないようです。

    function.phpでも抵触するような処理はないと思います。
    サポートとに問い合わせる傍ら、もう少し調べてみます。

    念の為、コードも載せておきます。

    <?php get_header(); ?>
    
    <div id="contents" class="clearfix">
    	<div id="main">
            <h2 class="pagetitle">カテゴリー:『<?php single_tag_title( ); ?>』 の投稿一覧</h2>
    
            <?php while (have_posts()) : the_post(); ?>
    
                    <h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
     <div class="sectionBorder2"><div id="archive_meta"><ul>
    <li><span class="date post_calendar"><?php the_time('Y年m月d日') ?></span><span class="post_category"><?php the_category(', '); ?></span>
    <span class="post_tag"><?php the_tags('', ', '); ?></span>
    <span class="post_comments"><a href="<?php comments_link(); ?>"><?php comments_number('コメント0件', 'コメント1件', 'コメント%件');?></a></span>
    <?php if ( is_user_logged_in() == TRUE ) : edit_post_link('編集', '<span class="edit-link">[ ', ' ]</span>');endif ?>
    </li>
    </ul></div>
                      <?php the_content() ?></div>
            <?php endwhile; ?>
    
    <?php get_template_part('loop-pagenav'); ?>
    
    	</div>
    
    	<?php get_sidebar(); ?>
    
    <?php get_footer(); ?>
    トピック投稿者 au1000

    (@au1000)

    書き忘れました。
    上記コードはcategory.phpのコードです。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    loop-pagenav.phpに、ページナビ用のコードを書いてるってことでいいですね?

    ようやく、まるっと挙げてもらったコードを自分の環境にコピペして試してみましたけど、
    ページ送りは正常に動作しました。
    なので挙げてもらったコード部分の問題じゃないと思います。
    ちなみに、直してもらう前の長い方のコードでも問題なく動きました。

    なので今上がっている情報だけでは手詰まりなかんじです。すみません。
    rewriteまわりがちゃんと動いてないとかかな??

    トピック投稿者 au1000

    (@au1000)

    >>mypacecreatorさん

    ありがとうございます。
    loop-pagenav.phpは仰る通りです。
    上部に記載したYuriko.netさんのページネーションがそのまま入っています。

    rewrite関係ですが、.htaccessにリダイレクト処理(この処理)を行ったいましたので
    その処理もデフォルトに戻し、試しましたが駄目でした。

    サポートからもパーマリンクと.htaccessの設定をご確認くださいと回答がありましたが
    他になにもないようですので、どうしようもない状況です。

    念の為、.htaccessも記載します。

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

    もう少し調べます。

    トピック投稿者 au1000

    (@au1000)

    解決しましたので、ご報告です。

    当初からプラグインでWP No Category Baseを使用していましたが
    この件が原因のだったようです。

    ■プラグイン名:WP No Category Base

    停止時:カテゴリー一覧でのページ送りエラー
    有効化:該当ページ表示

    テーマ編集時は停止にしていました。
    他に思いつくところが無かったので、苦肉の対応でしたが
    プラグインは慎重に使わないといけないと思いました。
    mypacecreatorさん、ありがとうございました。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    WP No Category Baseですかーーー。
    さすがに、そこまでは推測できませんでしたわ^^;
    やはり、デバッグ時はプラグイン全停止、これ大事ですね。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「アーカイブのページ送り」には新たに返信することはできません。