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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

WordPress

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

2回答

610閲覧

別のWORDPRESSデータベースよりカスタム投稿タイプの記事数を出すSQL文

white_horse

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

WordPress

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2020/05/16 08:10

お世話になっております。
当社WORDPRESSを各支店でHPを別々に管理しており記事の総数の件数と今月の投稿件数を
ホームページ上にその数を掲示したいとのことです。

こちらのteratailさんでの記事を参考にしてみましたがなかなか
思うように数の表示が出来ません。
私がやってみたのは以下の通りになります。
残念ながらエラーになってしまいました。

SQL文

1/*別のデータベースより記事内容を取得 以下functionページに記載*/ 2$another_db_name = 'db_name'; 3$another_db_user = 'db_user'; 4$another_db_pass = 'db_pass'; 5$another_db_host = 'db_host'; 6$another_tb_prefix = 'wp_'; 7 8$anoteher_wpdb = new wpdb($another_db_user, $another_db_pass, $another_db_name, $another_db_host); 9 10//プレフィックスの設定 11$anoteher_wpdb->set_prefix($another_tb_prefix); 12 13/*以上functionページここまで*/ 14 15/*以下総数の件数表示 kijiがカスタム投稿タイプ* / 16 17<?php 18$all_cnt = $anoteher_wpdb->get_results(" 19 SELECT COUNT(*) 20 FROM $anoteher_wpdb->posts 21 WHERE post_type = 'kiji' 22 AND post_status = 'publish' 23 ORDER BY post_date DESC" 24); 25 26echo "今までの記事の総数は"$all_cnt"件です"; 27?> 28

次に今月のみ投稿された記事件数のコードも色んな記事を確認して
書いてみました。(これも見よう見まねですがエラーになります。)

/*別のデータベースより記事内容を取得 以下functionページに記載*/ $another_db_name = 'db_name'; $another_db_user = 'db_user'; $another_db_pass = 'db_pass'; $another_db_host = 'db_host'; $another_tb_prefix = 'wp_'; $anoteher_wpdb = new wpdb($another_db_user, $another_db_pass, $another_db_name, $another_db_host); //プレフィックスの設定 $anoteher_wpdb->set_prefix($another_tb_prefix); /*以上functionページここまで*/ /*以下今月の件数表示 kijiがカスタム投稿タイプ* / <?php $kongetsu_cnt = $anoteher_wpdb->get_results(" SELECT DATE_FORMAT( POST_DATE, '%Y%m%d') targetdate, COUNT(*) FROM $anoteher_wpdb->posts WHERE post_type = 'kiji' AND post_status = 'publish' AND POST_DATE >= CONCAT( DATE_FORMAT( NOW(), '%Y%m'), '01' ) GROUP BY date_format( POST_DATE, '%Y%m%d') ORDER BY post_date" ); echo "今月の記事の総数は"$kongetsu_cnt"件です"; ?>

SQL文やプログラムコードをほとんど書いたことがなく全く見当違いの内容と思いますが
ぜひお教えいただけますと助かります。
どうぞよろしくお願いいたします。

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

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

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

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

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

CHERRY

2020/05/16 09:10

> 残念ながらエラーになってしまいました。 エラーになりましたでは、どのような状況かわかりません。 たとえば、 なおしたら動きました という回答があった場合、どのようにして解決したかわかるでしょうか? 質問には、試した内容と試した結果発生している状況を具体的に記載してください。 エラーが出ているのであれば、具体的なエラーメッセージを記載していただけないでしょうか?
white_horse

2020/05/16 09:38

ご指摘ありがとうございます。エラーはsyntax error, unexpected '<', expecting end of file inで「変数が定義されていない」ことが原因のようですがこれも含めてわからないでおります。
CHERRY

2020/05/17 06:49 編集

変数が定義されていないと判断された理由はなにでしょうか? エラーメッセージが > Syntax error, unexpected ’<’ expecting end of file in であれば、「予期しないところに `<` がある」というエラーなので、質問に記載されているコードが PHP ファイルのすべてのコードでは無いと思いますので、このコードだけでは何処が原因という判断は難しいです。 どのようなエラーメッセージが、どのファイルのどの行で発生していて、エラーの発生している前後のソースコードがわからないと判断が難しいです。 エラーメッセージにエラーが発生しているファイル名や行数があると思いますので、それらも省略せずに「発生しているエラーメッセージ全文をそのまま記載してください。」 メッセージの中に個人情報やパスワード等の秘密情報が含まれる場合は、なにが書かれていたのかが判別できる適切な文字列に置き換えていただければOKです。(例: WebサイトのURL の部分は、example.com に、ユーザー名の部分は、「ユーザー名」という文字列に、APIキーやパスワード等の部分は、なにが記載されていたのかが判別できる「パスワード」等の文字列に置き換え。)
guest

回答2

0

別の方面からの案として...

register_post_type で、カスタム投稿を登録した際に

register_post_type('custompost', [
'show_in_rest' => true,
'rest_base' => 'custompost', // API のスラッグ
]);

のように show_in_rest と rest_base を登録している場合は、WP REST API で、JSON 形式で投稿を取得できます。


WP REST API で、WordPressのURL/wp-json/wp/v2/カスタム投稿タイプのベースURL にパラメータを付けて、WP REST API 経由でアクセスすれば、JSON 形式で カスタム投稿を取得できます。

たとえば、WordPress の URL が http://example.com/ で、 post_type が「custompost」 投稿日が「2020-04-01」(after)から「2020-04-30」(before)まで取得するのであれば、

http://example.com/wp-json/wp/v2/custompost?after=2020-04-01T00:00:00&before=2020-05-01T00:00:00

のようになります。( before は、 2020-04-30T23:59:59 でも OK )

参考情報

参照


(追記)

エラーはsyntax error, unexpected '<', expecting end of file inで「変数が定義されていない」ことが原因のようですがこれも含めてわからないでおります。

エラーメッセージが省略されているので、何処で発生しているのか不明ですが...

文法エラー部分を指摘すると

echo "今までの記事の総数は"$all_cnt"件です";

文字列の連結であれば、 . 演算子が必要です。
( 文字列演算子 参照 )

投稿2020/05/16 10:15

編集2020/05/16 11:16
CHERRY

総合スコア25171

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

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

kei344

2020/05/16 11:21

> エラーメッセージ 「<?php」がPHPの中に入っているからでは。
CHERRY

2020/05/16 11:26 編集

あー。なるほど。 > /*以上functionページここまで*/ とあったので、前半が、functions.php で、後半が page-***.php 等のテンプレートファイルの2つのファイルに追加した内容をまとめて記載したのだと思っていましたが、その可能性がありそうですね。 質問者のコメントを待ちましょう。
white_horse

2020/05/17 02:52

ご回答いただきありがとうございます。CHERRYさんがおっしゃられたように前半が、functions.php で、後半が page-***.php 等のテンプレートファイルの2つのファイルに追加した内容をまとめて記載したものです。
white_horse

2020/05/18 20:25

CHERRYさま WP REST APIのご教授ありがとうございます。こちらの方法を確認したのですが現在運用しているパーマリンクがディフォルトのままです。パーマリンクを変更してしまうと他のリンクに影響が出てしまう恐れがあり使えなかったです。
CHERRY

2020/05/18 20:52

> こちらの方法を確認したのですが現在運用しているパーマリンクがディフォルトのままです。パーマリンクを変更してしまうと他のリンクに影響が出てしまう恐れがあり使えなかったです。 基本的に WordPress のパーマリンク構造は変更する必要はありません。 ---- WordPress のバージョンが不明ですが... 新エディタ Gutenberg が採用された 5.x 以降は、WP REST API は、デフォルトで有効になっていますので、 `/wp-json/wp/v2/posts` 等の WP REST API パーマリンクはデフォルトで用意されています。 カスタム投稿を登録した場合も、新エディタが WP REST API 経由でのアクセスを利用するので、rest_base を指定していない場合もデフォルトで、`/wp-json/wp/v2/カスタム投稿のPost type` のパーマリンクは作成されます。 register_post_type() で、rest_base を省略した場合は、post_type と同じ値がデフォルトで設定されます。 show_in_rest については、微妙なところですが、ブロックエディタの Gutenberg でカスタム投稿を扱うためには、 REST API でのアクセスが必須なので、最近のバージョン(5.x)の場合は、 true になっているのではないかと思います ---- 「質問への追記・修正」にも「エラーメッセージを省略せずに詳細を記載してください」と書いていますので、確認をお願いします。
guest

0

投稿タイプごとに公開済み記事数を表示させるなら関数があります。

【WordPress:公開済み記事数を表示させる方法 | NxWorld】
https://www.nxworld.net/wordpress/wp-show-all-posts-number.html

【wp_count_posts() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/wp_count_posts/

投稿2020/05/16 08:21

kei344

総合スコア69407

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

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

kei344

2020/05/16 08:27

「別のWORDPRESS」という部分を読み飛ばしていました、無視してください。
white_horse

2020/05/16 08:39

ご意見ありがとうございます。同じデータベースなら関数でできるみたいですが別ですとSQL文で書かないといけないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問