質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

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

PHP

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

Q&A

解決済

1回答

1873閲覧

【WordPress・PHP】home.phpに、カスタム投稿一覧を出力してページネーション機能させたい

yukabyo

総合スコア135

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/02/03 00:37

●やりたいこと
WordPressのトップページ(home.php)で、
reportというカスタム投稿の記事を15件ずつ出力して、15件をこえた場合にページネーションを付けたい。ページネーションはプラグインなしで付けたいです。

以前、カテゴリのページネーションの方法を教えていただき、ベストアンサーの方法で解決できたので、参考にしようと思ったのですが、どう変えていいものか、よくわかりませんでした。以前質問した内容

現状は以下のような感じまで書いています。
調べていろいろ試してはみたのですが、うまくいかず、わかる方教えていただけないでしょうか?

php

1<?php 2$paged = get_query_var('paged') ? get_query_var('paged') : 1 ; 3$args = array( 4 'post_type' => 'report', 5 'posts_per_page' => 15, /* 表示する数 */ 6 'paged' => $paged, 7); ?> 8<?php $my_query = new WP_Query( $args ); ?> 9<ul> 10<?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?> 11 <li> 12 <?php the_title(); ?> 13 </li> 14<?php endwhile; ?> 15</ul> 16<?php wp_reset_postdata(); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決です。ありがとうございました!

php

1<?php 2$paged = get_query_var('paged') ? get_query_var('paged') : 1 ; 3$args = array( 4 'post_type' => 'report', /* 投稿タイプを指定 */ 5 'posts_per_page' => 15, 6 'paged' => $paged, 7); ?> 8<?php query_posts( $args ); ?> 9<?php if(have_posts()): while(have_posts()): the_post(); ?> 10 <?php the_title(); ?><br> 11 <?php endwhile; ?> 12 <?php else : ?> 13 <div class="noentry"> 14 現在記事はありません 15 </div> 16<?php endif; ?> 17<!--ページネーション--> 18<?php if (function_exists("pagination")) pagination($wp_query->max_num_pages); ?> 19<?php wp_reset_query(); ?>

php

1//$pagesが設定されてないなら初期値="",$rangeが設定されてないなら初期値2です 2function pagination($pages = '', $range = 2) { 3 4 //ページネーション内の表示するページリンク数 5 $showitems = ($range * 2)+1; 6 7 //現在のページ数を取得 8 global $paged; 9 10 //ページがもし空(1ページ)なら1を代入 11 //2ページ目に呼び出されたら$pagedに1は代入されません 12 if(empty($paged)) $paged = 1; 13 14 //1ページの場合のページ総数設定 15 if($pages == '') { 16 //$wp_queryを呼び出し 17 global $wp_query; 18 //ページの総数を$pagesに代入 19 $pages = $wp_query->max_num_pages; 20 //ページの総数が取得できなかったら$pagesに1を代入 21 if(!$pages) { $pages = 1; } 22 } 23 24 //ページの総数が1ページだけじゃないなら 25 if(1 != $pages) { 26 //ページネーション用のdivタグを書き出し 27 echo "<ul class='pagination'>"; 28 29 //最初のページに戻るを表示する 30 if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<li class='first'><a href='".get_pagenum_link(1). "'></a></li>"; 31 32 //前のページリンクを表示する 33 if($paged> 1 && $showitems < $pages) echo "<li class='previous'><a href='".get_pagenum_link($paged - 1). "'></a></li>"; 34 35 //各ページリンクを表示する数字部分 36 for ($i=1; $i <=$pages; $i++) { 37 if (1 !=$pages &&( !($i>= $paged+$range+1 || $i <=$paged-$range-1) || $pages <=$showitems )) { 38 echo ($paged==$i)? "<li class='current'><a>".$i. "</a></li>": "<li class='inactive'><a href='".get_pagenum_link($i). "' class='inactive' >".$i. "</a></li>"; 39 } 40 } 41 //次のページリンクを表示する 42 if ($paged < $pages && $showitems < $pages) echo "<li class='next'><a href='".get_pagenum_link($paged + 1). "'></a></li>"; 43 44 //最後のページに進むを表示する 45 if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<li class='last'><a href='".get_pagenum_link($pages). "'></a></li>"; 46 47 //ページネーション用のdiv終了タグを書き出し 48 echo "</ul>\n"; 49 } 50 51add_action( 'pre_get_posts', 'home_posts_type' ); 52function home_posts_type( $wp_query ) { 53 if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->is_home() ) { //管理画面以外 かつ メインクエリー かつ ホーム 54 $wp_query->set( 'post_type', array( 'post', 'report' ) ); 55 $wp_query->set( 'posts_per_page', 15 ); // 10件ずつ表示 56 } 57} 58}

投稿2018/02/03 01:32

yukabyo

総合スコア135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問