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

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

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

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

PHP

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

Q&A

1回答

566閲覧

タームごとの記事一覧から全体のタイトルの有無、本文の有無、カスタムフィールドの有無をカウントして取得したい

t.nakadate

総合スコア11

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/08/06 06:53

各ターム内の記事全体から、各入力項目に対する入力の有無をカウントしたいと考えています。

全体の想定では
0. WP_Queryでタームごとに記事を一覧表示
0. 各入力項目件数を取得し変数に格納
0. ループ内で変数を条件分岐で比較

を想定しています。

①は以下の処理でタームごとに記事一覧を表示する事ができました。

<?php $target_post = 'post_type'; $target_post_cat = 'term_name'; $post_count = -1; $cat_args = array( 'parent' => 0, //トップレベルのタームのみ 'hierarchical' => 0 //子タームを含めない ); $cats = get_terms($target_post_cat, $cat_args); foreach( $cats as $cat ): ?> <?php $target_cat_slug = esc_html($cat -> slug); $target_cat_name = esc_html($cat -> name); ?> <?php $args = array( 'post_type' => array($target_post), 'taxonomy' => $target_post_cat, 'term' => $target_cat_slug, 'post_status' => 'publish', 'posts_per_page' => $post_count, // 表示するページ数 'orderby' => 'menu_order', 'order' => 'DESC' ,// 並び順 ); $my_query = new WP_Query($args); ?>

② 各入力項目件数を取得し変数に格納

について方法がわかりません。

各ターム内の記事全体をみて、
タームごとに
タイトルが入力されている件数 = $titleに入れたい
本文が入力されている件数 = $contentに入れたい
カスタムフィールド「A」(テキスト)が入力されている件数 =$aに入れたい

以下のサイトを参考にいろいろチャレンジしてみましたが、まったく兆しが見えません。

・WordPressで特定のカスタムフィールドの値を持つ投稿の数を取得する
https://hacknote.jp/archives/11762/

・WordPress WP_Query 複数のカスタムフィールドを条件に投稿を取得
https://chaika.hatenablog.com/entry/2018/03/12/090000

・もう迷わんよ。WordPressで固定ページや投稿ページが持つ様々な情報を取得する方法まとめ[基本情報・投稿タイプ・カスタムフィールド・カテゴリ・タグ・タクソノミーなど]
https://wemo.tech/400

③ ループ内で変数を条件分岐で比較

まだ、②ができないのですが想定では以下のように考えています。

<?php if( $my_query->have_posts() ) : ?> <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?> <?php if($title > 0 ) : ?> ~特定の処理~ <?php endif; ?>    <?php if($content > 0 ) : ?> ~特定の処理~ <?php endif; ?> <?php endwhile; ?> <?php endif; ?>

ご教示のほど、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ヒントになれば。

PHP

1 2/* 3使い方は、ループ内で、 4$title = get_title_count( $args ); 5$content = get_content_count( $args ); 6 7そういえば、pagedは考えなくていいのかな? 8*/ 9 10//post_titleが空欄ではない記事件数 11function get_title_count( $args ){ 12 global $wpdb; 13 $args['suppress_filters'] = false; 14 add_filter( 'posts_where', 'my_posts_title_where' ); 15 $results = get_posts( $args ); 16 remove_filter( 'posts_where', 'my_posts_title_where' ); 17 if( empty( $results ) ){ 18 return 0; 19 } 20 21 return count( $results ); 22} 23 24function my_posts_title_where( $where ){ 25 global $wpdb; 26 return $where .= " AND {$wpdb->posts}.post_title NOT LIKE '' "; 27} 28 29 30//post_contentが空欄ではない記事件数 31function get_content_count( $args ){ 32 global $wpdb; 33 $args['suppress_filters'] = false; 34 add_filter( 'posts_where', 'my_posts_content_where' ); 35 $results = get_posts( $args ); 36 remove_filter( 'posts_where', 'my_posts_content_where' ); 37 if( empty( $results ) ){ 38 return 0; 39 } 40 41 return count( $results ); 42} 43 44function my_posts_content_where( $where ){ 45 global $wpdb; 46 return $where .= " AND {$wpdb->posts}.post_content NOT LIKE '' "; 47} 48

投稿2019/08/06 12:39

編集2019/08/08 00:27
yukikp

総合スコア797

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問