質問編集履歴

3 追加

退会済みユーザー

退会済みユーザー

2018/10/20 12:03  投稿

wordpressでページネーションを設置しても表示されない
wordpressで記事に対するページネーションを作っています。
下記のコードでは新着記事が14件以上になったら2ページ目を増やしてくれるようになっているはずなのですが、
ページネーションが表示されません。
検証機能を使ってみてみるとページネーションのコードを囲っているdivタグは表示されているので
ページネーションも一応設置はされてると思うのですが…。
どうしたら表示されるようになるでしょうか。
「現在のコード」
```ここに言語を入力
<!-- newPostBox -->
<div class="newPostBox">
   
<!-- 新着記事の表示 -->
<?php
$args = array(
'posts_per_page' => 14
);
$posts = get_posts( $args );
foreach ( $posts as $post ):
setup_postdata( $post );
?>
   
<!-- カテゴリー名取得 -->
<?php
 $category = get_the_category();
 $cat_id  = $category[0]->cat_ID;
 $cat_name = $category[0]->cat_name;
 $cat_slug = $category[0]->category_nicename;
?>
<!-- カテゴリー名取得 -->
<!-- imgTextBox -->
<div class="imgTextBox">
<p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p>
<p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p>
</div>
<!-- imgTextBox -->   
<?php
endforeach;
wp_reset_postdata();
?>
<!-- 新着記事の表示 -->
<!-- pagination -->
<div class=”pagination”>
<?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' => 1,
       'current' => ($paged ? $paged : 1),
       'prev_text' => 'PREVIOUS',
       'next_text' => 'NEXT',
   )); ?>
</div>
<!-- pagination -->
   <!-- pickupBox -->
<div class="pickupBox">
   <p class="pickTitle">ピックアップ記事</p>
<!-- imgTextBox -->
<div class="imgTextBox">
   <?php query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<?php
 $category = get_the_category();
 $cat_id  = $category[0]->cat_ID;
 $cat_name = $category[0]->cat_name;
 $cat_slug = $category[0]->category_nicename;
?>
<p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p>
<p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p>
<?php endwhile; endif; ?>
</div>
<!-- imgTextBox -->
</div>
<!-- pickupBox -->
```
「試したこと」
上記とは別のページネーションのコードを使ってみました。
こちらだと「1 of 0」とは表示されるのですが、2ページ目に飛べまぜん。
```ここに言語を入力
function pagination( $pages = 1, $range = 2, $show_only = false ) {
   $pages = (int) $pages;   //float型で渡ってくるので明示的に int型 へ
   $paged = get_query_var('paged') ? get_query_var('paged') : 1;
   //表示テキスト
   $text_first  = "« 最初へ";
   $text_before = "‹ 前へ";
   $text_next   = "次へ ›";
   $text_last   = "最後へ »";
   if ( $show_only && $pages === 1 ) {
       // 1ページのみで表示設定が true の時
       echo '<div class="pagination"><span class="current">1</span></div>';
       return;
   }
   if ( $pages === 1 ) return;   // 1ページのみで表示設定もない場合
   if ( 1 !== $pages ) {
       //2ページ以上の時
       echo '<div class="pagination"><span>Page ', $paged ,' of ', $pages ,'</span>';
       if ( $paged > $range + 1 ) {
           // 「最初へ」 の表示
           echo '<a href="', get_pagenum_link(1) ,'">', $text_first ,'</a>';
       }
       if ( $paged > 1 ) {
           // 「前へ」 の表示
           echo '<a href="', get_pagenum_link( $paged - 1 ) ,'">', $text_before ,'</a>';
       }
       for ( $i = 1; $i <= $pages; $i++ ) {
           if ( $i <= $paged + $range && $i >= $paged - $range ) {
               // $paged +- $range 以内であればページ番号を出力
               if ( $paged === $i ) {
                   echo '<span class="current">', $i ,'</span>';
               } else {
                   echo '<a href="', get_pagenum_link( $i ) ,'" class="inactive">', $i ,'</a>';
               }
           }
       }
       if ( $paged < $pages ) {
           // 「次へ」 の表示
           echo '<a href="', get_pagenum_link( $paged + 1 ) ,'">', $text_next ,'</a>';
       }
       if ( $paged + $range < $pages ) {
           // 「最後へ」 の表示
           echo '<a href="', get_pagenum_link( $pages ) ,'">', $text_last ,'</a>';
       }
       echo '</div>', "\n";
   }
}
```
他にも色々なサイトのコードを使ってみましたが何も表示されませんでした。
  • PHP

    29286 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    11313 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

2 追加

退会済みユーザー

退会済みユーザー

2018/10/20 12:02  投稿

wordpressでページネーションを設置しても表示されない
wordpressで記事に対するページネーションを作っています。
下記のコードでは新着記事が14件以上になったら2ページ目を増やしてくれるようになっているはずなのですが、
ページネーションが表示されません。
検証機能を使ってみてみるとページネーションのコードを囲っているdivタグは表示されているので
ページネーションも一応設置はされてると思うのですが…。
どうしたら表示されるようになるでしょうか。
「現在のコード」
```ここに言語を入力
<!-- newPostBox -->
<div class="newPostBox">
   
<!-- 新着記事の表示 -->
<?php
$args = array(
'posts_per_page' => 14
);
$posts = get_posts( $args );
foreach ( $posts as $post ):
setup_postdata( $post );
?>
   
<!-- カテゴリー名取得 -->
<?php
 $category = get_the_category();
 $cat_id  = $category[0]->cat_ID;
 $cat_name = $category[0]->cat_name;
 $cat_slug = $category[0]->category_nicename;
?>
<!-- カテゴリー名取得 -->
<!-- imgTextBox -->
<div class="imgTextBox">
<p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p>
<p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p>
</div>
<!-- imgTextBox -->   
<?php
endforeach;
wp_reset_postdata();
?>
<!-- 新着記事の表示 -->
<!-- pagination -->
<div class=”pagination”>
<?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' => 1,
       'current' => ($paged ? $paged : 1),
       'prev_text' => 'PREVIOUS',
       'next_text' => 'NEXT',
   )); ?>
</div>
<!-- pagination -->
   <!-- pickupBox -->
<div class="pickupBox">
   <p class="pickTitle">ピックアップ記事</p>
<!-- imgTextBox -->
<div class="imgTextBox">
   <?php query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<?php
 $category = get_the_category();
 $cat_id  = $category[0]->cat_ID;
 $cat_name = $category[0]->cat_name;
 $cat_slug = $category[0]->category_nicename;
?>
<p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p>
<p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p>
<?php endwhile; endif; ?>
</div>
<!-- imgTextBox -->
</div>
<!-- pickupBox -->
```
「試したこと」
上記とは別のページネーションのコードを使ってみました。
こちらだと「1 of 0」とは表示されるのですが、2ページ目に飛べまぜん。
```ここに言語を入力
function pagination( $pages = 1, $range = 2, $show_only = false ) {
   $pages = (int) $pages;   //float型で渡ってくるので明示的に int型 へ
   $paged = get_query_var('paged') ? get_query_var('paged') : 1;
   //表示テキスト
   $text_first  = "« 最初へ";
   $text_before = "‹ 前へ";
   $text_next   = "次へ ›";
   $text_last   = "最後へ »";
   if ( $show_only && $pages === 1 ) {
       // 1ページのみで表示設定が true の時
       echo '<div class="pagination"><span class="current">1</span></div>';
       return;
   }
   if ( $pages === 1 ) return;   // 1ページのみで表示設定もない場合
   if ( 1 !== $pages ) {
       //2ページ以上の時
       echo '<div class="pagination"><span>Page ', $paged ,' of ', $pages ,'</span>';
       if ( $paged > $range + 1 ) {
           // 「最初へ」 の表示
           echo '<a href="', get_pagenum_link(1) ,'">', $text_first ,'</a>';
       }
       if ( $paged > 1 ) {
           // 「前へ」 の表示
           echo '<a href="', get_pagenum_link( $paged - 1 ) ,'">', $text_before ,'</a>';
       }
       for ( $i = 1; $i <= $pages; $i++ ) {
           if ( $i <= $paged + $range && $i >= $paged - $range ) {
               // $paged +- $range 以内であればページ番号を出力
               if ( $paged === $i ) {
                   echo '<span class="current">', $i ,'</span>';
               } else {
                   echo '<a href="', get_pagenum_link( $i ) ,'" class="inactive">', $i ,'</a>';
               }
           }
       }
       if ( $paged < $pages ) {
           // 「次へ」 の表示
           echo '<a href="', get_pagenum_link( $paged + 1 ) ,'">', $text_next ,'</a>';
       }
       if ( $paged + $range < $pages ) {
           // 「最後へ」 の表示
           echo '<a href="', get_pagenum_link( $pages ) ,'">', $text_last ,'</a>';
       }
       echo '</div>', "\n";
   }
}
```
他にも色々なサイトのコードを使ってみましたが何も表示されませんでした。
  • PHP

    29286 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    11313 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

1 追加

退会済みユーザー

退会済みユーザー

2018/10/20 10:17  投稿

wordpressでページネーションを設置しても表示されない
wordpressで記事に対するページネーションを作っています。
下記のコードでは新着記事が14件以上になったら2ページ目を増やしてくれるようになっているはずなのですが、
ページネーションが表示されません。
検証機能を使ってみてみるとページネーションのコードを囲っているdivタグは表示されているので
ページネーションも一応設置はされてると思うのですが…。
どうしたら表示されるようになるでしょうか。
テンプレートはtwentyseventeenを使っています。
「現在のコード」
```ここに言語を入力
<!-- newPostBox -->
<div class="newPostBox">
   
<!-- 新着記事の表示 -->
<?php
$args = array(
'posts_per_page' => 14
);
$posts = get_posts( $args );
foreach ( $posts as $post ):
setup_postdata( $post );
?>
   
<!-- カテゴリー名取得 -->
<?php
 $category = get_the_category();
 $cat_id  = $category[0]->cat_ID;
 $cat_name = $category[0]->cat_name;
 $cat_slug = $category[0]->category_nicename;
?>
<!-- カテゴリー名取得 -->
<!-- imgTextBox -->
<div class="imgTextBox">
<p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p>
<p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p>
</div>
<!-- imgTextBox -->   
<?php
endforeach;
wp_reset_postdata();
?>
<!-- 新着記事の表示 -->
<!-- pagination -->
<div class=”pagination”>
<?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' => 1,
       'current' => ($paged ? $paged : 1),
       'prev_text' => 'PREVIOUS',
       'next_text' => 'NEXT',
   )); ?>
</div>
<!-- pagination -->
   <!-- pickupBox -->
<div class="pickupBox">
   <p class="pickTitle">ピックアップ記事</p>
<!-- imgTextBox -->
<div class="imgTextBox">
   <?php query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
<?php
 $category = get_the_category();
 $cat_id  = $category[0]->cat_ID;
 $cat_name = $category[0]->cat_name;
 $cat_slug = $category[0]->category_nicename;
?>
<p class="textP"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br><span class="postDate"><?php echo get_the_date( $format, $post ); ?></span><span class="writeName"><?php the_author(); ?></span><span class="catName"><?php echo $cat_name; ?></span></p>
<p class="imgP"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a></p>
<?php endwhile; endif; ?>
</div>
<!-- imgTextBox -->
</div>
<!-- pickupBox -->
```
「試したこと」
上記とは別のページネーションのコードを使ってみました。
こちらだと「1 of 0」とは表示されるのですが、2ページ目に飛べまぜん。  
```ここに言語を入力
function pagination( $pages = 1, $range = 2, $show_only = false ) {
   $pages = (int) $pages;   //float型で渡ってくるので明示的に int型 へ
   $paged = get_query_var('paged') ? get_query_var('paged') : 1;
   //表示テキスト
   $text_first  = "« 最初へ";
   $text_before = "‹ 前へ";
   $text_next   = "次へ ›";
   $text_last   = "最後へ »";
   if ( $show_only && $pages === 1 ) {
       // 1ページのみで表示設定が true の時
       echo '<div class="pagination"><span class="current">1</span></div>';
       return;
   }
   if ( $pages === 1 ) return;   // 1ページのみで表示設定もない場合
   if ( 1 !== $pages ) {
       //2ページ以上の時
       echo '<div class="pagination"><span>Page ', $paged ,' of ', $pages ,'</span>';
       if ( $paged > $range + 1 ) {
           // 「最初へ」 の表示
           echo '<a href="', get_pagenum_link(1) ,'">', $text_first ,'</a>';
       }
       if ( $paged > 1 ) {
           // 「前へ」 の表示
           echo '<a href="', get_pagenum_link( $paged - 1 ) ,'">', $text_before ,'</a>';
       }
       for ( $i = 1; $i <= $pages; $i++ ) {
           if ( $i <= $paged + $range && $i >= $paged - $range ) {
               // $paged +- $range 以内であればページ番号を出力
               if ( $paged === $i ) {
                   echo '<span class="current">', $i ,'</span>';
               } else {
                   echo '<a href="', get_pagenum_link( $i ) ,'" class="inactive">', $i ,'</a>';
               }
           }
       }
       if ( $paged < $pages ) {
           // 「次へ」 の表示
           echo '<a href="', get_pagenum_link( $paged + 1 ) ,'">', $text_next ,'</a>';
       }
       if ( $paged + $range < $pages ) {
           // 「最後へ」 の表示
           echo '<a href="', get_pagenum_link( $pages ) ,'">', $text_last ,'</a>';
       }
       echo '</div>', "\n";
   }
}
```
他にも色々なサイトのコードを使ってみましたが何も表示されませんでした。
  • PHP

    29286 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    11313 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る