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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

1回答

2510閲覧

公開済みの投稿数だけ取得したい

iambeginnerr

総合スコア12

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2021/02/09 04:54

前提・実現したいこと

wordpressでポータルサイトのようなサイトを制作をしております。
地方ごとに指定のターム一覧を表示させ、ターム横に記事数を表示させています。
記事数は以下のコードで表示できたのですが、「下書き」「非公開」の記事までカウントされてしまいます。
「公開済み」の記事数を表示したいです。
昨日から調べ続けておりますが、どこにどのように記載したら良いか分からず質問させていただきました。
PHPは初心者で、コードは調べながら書いたりコピペさせてもらったりしています。
どうぞよろしくお願いいたします。

発生している問題

下書きや非公開記事の分までカウントされてしまいます。

該当のソースコード

<div> <p>北海道・東北</p> <ul class="area"> <?php $post_type = 'shop'; $taxonomy = 'area_cat'; $args = array( 'parent' => 0, 'slug' => array('hokkaido','aomori','akita','yamagata','iwate','miyagi','fukushima'), 'pad_counts' => false, 'hide_empty' => false, ); $terms = get_terms( $taxonomy , $args ); if ( count( $terms ) != 0 ) { foreach ( $terms as $term ) { $term = sanitize_term( $term, $taxonomy ); $term_link = get_term_link( $term, $taxonomy ); if ( is_wp_error( $term_link ) ) { continue; } $slug = $term->slug; ?> <?php $allarea = get_term_by( 'slug', 'allarea-c', 'area_cat' ); $count = $allarea->count; /*「全国」対象の店舗は全てのカウントに加算されます*/ ?> <?php $count2 = $term->count; ?> <?php $allposts = $count + $count2; /*「全国」分と各都道府県分をここで足しました*/?> <?php echo '<li><a href="' . esc_url( $term_link ) . '" >' . $term->name .'<span class="count">(' .$allposts. ')</span></a></li>';?> <?php wp_reset_query(); ?> <?php } } ?> </div>

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

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

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

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

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

guest

回答1

0

get_termsでは、たぶん、取得できないと思いますので、

get_postsでtax_queryを使ってみてはいかがでしょうか。

php

1$arr = array( 2 'posts_per_page' => -1, 3 'post_status' => 'publish', 4 'post_type' => 'shop', 5 'tax_query' => array( 6 array( 7 'taxonomy' => 'area_cat', 8 'field' => 'slug', 9 'terms' => array( 'hokkaido','aomori','akita','yamagata','iwate','miyagi','fukushima' ), 10 ), 11 ) 12); 13$res = get_posts( $arr ); 14$allposts = count($res);

投稿2021/02/09 08:10

hiok

総合スコア595

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

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

iambeginnerr

2021/02/10 04:38

回答いただきありがとうございます! get_terms部分を教えていただいたコードに...ということでしょうか? だとするとget_postsでターム一覧も取得するということでしょうか。 get_postでターム一覧を取得する方法が、調べてみてもわかりませんでした。 質問攻めですみません。
hiok

2021/02/10 05:39

get_germsとget_posts両方を使います。 get_postsは「記事数」を取得するためだけに使用します。
iambeginnerr

2021/02/10 06:07

途中にコードを挿入してみたのですが、以下が真っ白になってしまいました。原因などを探りつつもう少し頑張ってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問