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

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

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

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

PHP

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1684閲覧

カスタム投稿ページ一覧にページネーション機能を導入したい

cafe1111

総合スコア62

WordPress

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

PHP

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/06/15 06:27

編集2020/06/15 07:07

■やりたいこと
カスタム投稿ページ一覧にページネーション機能を導入したい

■問題点
下記の記事を参考にページネーション機能を導入しようとしたが数字をクリックしても記事が切り替わらない。
参考

php

1//index.php 2<dl> 3 <?php $args = array( 4 'numberposts' => 5, 5 'post_type' => 'notice' 6 ); 7 $customPosts = get_posts($args); 8 if($customPosts):foreach($customPosts as $post):setup_postdata($post); 9 ?> 10 <dt><a href="<?php the_permalink(); ?>"><?php the_date('Y/m/d'); ?></a> 11 <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 12 <?php endforeach; ?> 13 <?php else: ?> 14 <p>ページがありません</p> 15 <?php endif; ?> 16 <!-- ページネーション --> 17 <?php wp_reset_postdata(); ?> 18 <?php pagenation($posts_per_page, 'notice');?> 19</dl> 20 21//functions.php 22function pagenation($limit = NULL, $post_typed = 'posts') { 23 global $wp_rewrite; 24 global $paged; 25 global $wp_query; 26 27 // 検索条件 28 $query = array(); 29 if ($limit != NULL) { 30 $query['posts_per_page'] = $limit; 31 } 32 if (count($query) != 0) { 33 $wp_query->query($query); 34 } 35 36 $wp_query->query(array( 37 'post_type' => $post_typed, 38 )); 39 $paginate_base = get_pagenum_link(); 40 41 if( strpos( $paginate_base, '?' ) || !$wp_rewrite->using_permalinks() ) { 42 $paginate_format = ''; 43 $paginate_base = add_query_arg( 'paged', '%#%' ); 44 } else { 45 $paginate_format = (substr( $paginate_base, -1, 1 ) == '/' ? '' : '/') . user_trailingslashit('page/%#%/','paged'); 46 $paginate_base .= '%_%'; 47 } 48 49 50 if( $paged < 2 ) { 51 $paged = 1; 52 } 53 $args = array( 54 'base' => $paginate_base, 55 'format' => $paginate_format, 56 'total' => $wp_query->max_num_pages, 57 'current' => $paged, 58 'show_all' => false, 59 'prev_next' => true, 60 'prev_text' => '&laquo;', 61 'next_text' => '&raquo;', 62 'type' => 'array', 63 ); 64 $pagenate_array = paginate_links($args); 65 66 // 配列がある場合のみ 67 if (is_array($pagenate_array) == TRUE) { 68 $pagenate .= '<div class="wp-pagenavi">'; 69 foreach ($pagenate_array as $key => $value) { 70 71 if (preg_match('/current/', $value) == TRUE) { 72 $class = ''; 73 } 74 else { 75 $class = ''; 76 } 77 78 // $value = "<span class=\"{$class}\">".$value.'</span>'; 79 // リンク追加 80 $pagenate .= $value; 81 } 82 83 $pagenate .= '</div>'; 84 echo $pagenate; 85 } 86} 87

php

1//追加 2//functions.php 3function init_func(){ 4 add_theme_support('title-tag'); 5 add_theme_support('post-thumbnails'); 6 7 register_post_type('notice',[ 8 'labels' => [ 9 'name' => 'お知らせ', 10 'singular_name' => 'お知らせ', 11 'add_new' => 'お知らせを追加', 12 'add_new_item' => 'お知らせを追加', 13 'edit_item' => 'お知らせを編集', 14 'new_item' => '新しいお知らせ', 15 'all_items' => '全てのお知らせ', 16 'view_item' => 'お知らせを見る', 17 'search_items' => 'お知らせを探す', 18 'not_found' => 'お知らせは見つかりませんでした', 19 'not_found_in_trash' => 'ゴミ箱は空です', 20 'parent_item_colon' => '', 21 'menu_name' => 'お知らせ' 22 23 ], 24 'public' => true, 25 'has_archive' => true, 26 'hierarchical' => false, 27 'supports' => [ 28 'title', 29 'editor', 30 'page-attributes' 31 ], 32 'menu_position' => 4, 33 'menu_icon' => 'dashicons-warning' 34 ]); 35} 36add_action('init','init_func'); 37 38

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

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

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

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

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

kei344

2020/06/17 02:04

まだ質問が「受付中」になっていますが、どのように解決したのかを回答文に書き、「解決済」にされてはいかがでしょうか。
cafe1111

2020/06/17 02:40

わかりました。
guest

回答2

0

自己解決

php

1 $args = array( 2 'numberposts' => 5, 3 'post_type' => 'notice' 4 );

//修正

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_status' => 'publish', 'post_type' => 'notice', 'paged' => $paged, 'posts_per_page' => '5', 'orderby' => 'date', 'order' => 'DESC' );

このように変更したら解決しました。

投稿2020/06/17 02:42

cafe1111

総合スコア62

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

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

0

もしカスタム投稿一覧を固定ページで作ろうとしているのだとすれば、カスタム投稿を作成する時点でhas_archiveをtrueにするだけで一覧ページが作成できるのでそちらを使いましょう。

【カスタム投稿タイプのアーカイブを作るには | Snagimo】
http://snagimo.com/how-to-make-archives-of-custom-post-types

【WordPress » カスタム投稿タイプの設定 | MORILOG】
http://morilog.com/wordpress/post_type/register_post_type/

投稿2020/06/15 06:43

kei344

総合スコア69407

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

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

cafe1111

2020/06/15 07:08

functions.phpにhas_archiveを追加してみましたがページネーションが反映されませんでした。
cafe1111

2020/06/15 07:33

すみません、通常のループというのがわからないです。 できればコードを書いてくださるとありがたいです。
cafe1111

2020/06/15 08:28

普通のループだと記事自体取得ができませんでした。
kei344

2020/06/15 08:41

> 記事自体取得ができません 「ページは表示されるが記事が1件も無い」という状況か、「404ページになる」か、どちらでしょう。 また、「<!--ここに投稿が表示される-->」の部分に適切にコードを入れましたか? ↓これ <dt><a href="<?php the_permalink(); ?>"><?php the_date('Y/m/d'); ?></a> <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
cafe1111

2020/06/15 09:45

すみません、キャッシュが問題みたいで表示されていませんでした。 しかし、表示されたのは投稿ページから作成した記事でした。 自分が表示したいのカスタム投稿ページから作成した記事です。
kei344

2020/06/15 12:25

カスタム投稿のアーカイブ用のテンプレートで、URLも正しくカスタム投稿のアーカイブのURLになっていますか? あとどこかで query_posts を使っていたりしませんか?
cafe1111

2020/06/16 06:04

archive.phpとarchive.notice.phpを作成していなかったのでindex.phpをコピペして作成しました。 urlに関してはhttp://localhost:8888/aaaa/notice/だとカスタム投稿の記事だがページネーションは機能しない。 http://localhost:8888/aaaa/では投稿の記事だがページネーションは機能する。 index.phpではカスタム投稿の記事を表示 single.phpでは投稿の記事を表示としたいです。 query_postsに関しては探しましたが見つからなかったです。
cafe1111

2020/06/16 23:25

http://localhost:8888/aaaa/ がWPのルートですか? →はい、実際はaaaaのところは違う文字ですがあえて変えてます。 archive.notice.phpにthe_posts_pagination(); を使ってみましたがページネーションが消えただけでした。 条件付きの方で記事は取得できているのでそちらを使ってページネーションを導入することは無理なのでしょうか?
cafe1111

2020/06/16 23:56

なぜかわからないですが条件付きループのところをこのように変更したらできました! $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $wp_query = new WP_Query(); $my_posts = array( 'post_status' => 'publish', 'post_type' => 'post', 'paged' => $paged, 'posts_per_page' => '5', 'orderby' => 'date', 'order' => 'DESC' );
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問