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

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

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

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

WordPress

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

PHP

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

ページネーション

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

Q&A

0回答

454閲覧

【ワードプレス】タグのページネーションに空白のページが出来ます。:Warning: count()

haru.k.ah

総合スコア0

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

WordPress

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

PHP

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

ページネーション

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

0グッド

0クリップ

投稿2022/03/14 20:38

編集2022/03/15 15:40

PHPの初心者で、ワードプレスのプラグイン「anspress」を使ってQ&Aサイトを立ち上げています。
タグのページネーションが上手く作れず困っています。

アドオンのタグの一覧ページを作成するコードが

$tag_args = apply_filters( 'ap_tags_shortcode_args', $tag_args ); $query = new \WP_Term_Query( $tag_args ); // Count terms. $tag_args['fields'] = 'count'; $found_query = new \WP_Term_Query( $tag_args ); $tags_rows_found = $found_query->get_terms();** $ap_max_num_pages = ceil( count( $tags_rows_found ) / $per_page ); $question_tags = $query->get_terms(); include ap_get_theme_location( 'addons/tag/tags.php' );

となっており、
「$ap_max_num_pages = ceil( count( $tags_rows_found ) / $per_page );」
の部分に以下のワーニングが出ていました。

Warning: count(): Parameter must be an array or an object that implements Countable in

そのため、ワーニング部分を以下に変更しました。

$total_terms = wp_count_terms( '$question_tags', array( 'hide_empty' => false, 'parent' => 0, ) ); $ap_max_num_pages = ceil( $total_terms / $per_page );

その結果、ワーニングは消え、ページネーションは作れたのですが、何も表示されないページが複数ページできました。
ページネーションを作る時のcount()のワーニングの対応方法や空欄のページの消し方などわかる方がいらっしゃいましたらアドバイスをお願いします。

---------------コードの全文は以下になります。------------

public function tags_page() { global $question_tags, $ap_max_num_pages, $ap_per_page, $tags_rows_found; $paged = max( 1, get_query_var( 'paged' ) ); $per_page = (int) ap_opt( 'tags_per_page' ); $per_page = 0 === $per_page ? 1 : $per_page; $offset = $per_page * ( $paged - 1 ); $tag_args = array( 'taxonomy' => 'question_tag', 'ap_tags_query' => true, 'parent' => 0, 'number' => $per_page, 'offset' => $offset, 'hide_empty' => false, 'order' => 'DESC', ); $ap_sort = ap_isset_post_value( 'tags_order', 'count' ); if ( 'new' === $ap_sort ) { $tag_args['orderby'] = 'id'; $tag_args['order'] = 'DESC'; } elseif ( 'name' === $ap_sort ) { $tag_args['orderby'] = 'name'; $tag_args['order'] = 'ASC'; } else { $tag_args['orderby'] = 'count'; } if ( ap_isset_post_value( 'ap_s' ) ) { $tag_args['search'] = ap_sanitize_unslash( 'ap_s', 'r' ); } /** * Filter applied before getting tags. * * @var array */ $tag_args = apply_filters( 'ap_tags_shortcode_args', $tag_args ); $query = new \WP_Term_Query( $tag_args ); // Count terms. $tag_args['fields'] = 'count'; $found_query = new \WP_Term_Query( $tag_args ); $tags_rows_found = $found_query->get_terms(); //$ap_max_num_pages = ceil( count( $tags_rows_found ) / $per_page ); // ← この行がエラーとなった //ここから変更 $total_terms = wp_count_terms( '$question_tags', array( 'hide_empty' => false, 'parent' => 0, ) ); $ap_max_num_pages = ceil( $total_terms / $per_page ); $order = ap_opt( 'tags_page_order' ) === 'ASC' ? 'ASC' : 'DESC'; $cat_args = array( 'parent' => 0, 'number' => $per_page, 'offset' => $offset, 'hide_empty' => false, 'orderby' => ap_opt( 'tags_page_orderby' ), 'order' => $order, ); //ここまで追記 $question_tags = $query->get_terms(); include ap_get_theme_location( 'addons/tag/tags.php' ); }

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

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

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

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

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

tabuu

2022/03/15 00:50

$ap_max_num_pages という変数に代入した値は使われていませんがソースコードはこれだけでしょうか?
haru.k.ah

2022/03/15 15:49

ありがとうございます。コードを追記しました。始めたばかりで間違っていたら申し訳ないのですが、$ap_max_num_pagesに代入している値は無いように思います。 同じコードで、カテゴリーのページネーションはコードの「'question_tag'や'tag'」を「'question_category'や'category'」等に変更したもので作成できています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問