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

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

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

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

Q&A

1回答

1378閲覧

WordPressでTransientsの使い方が分かりません。

puku05

総合スコア6

WordPress

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

0グッド

0クリップ

投稿2018/04/05 02:30

前提・実現したいこと

WordPressに詳しい方助けてください。
やりたいことを調べていたら、https://teratail.com/questions/120135 のページにたどり着きました。
やりたいことはまさにこの質問と同じことなのですがこちらの回答にあったTransientsの使い方が分からず同じサイトで質問しようとこちらのサイトへ登録しました。

発生している問題・エラーメッセージ

エラーメッセージなどは表示されていません

該当のソースコード

今はこちらを書いて表示しています。

php

1function test_year(){ 2 global $wpdb; 3 $firstdate = $wpdb->get_var("SELECT post_date from $wpdb->posts where post_status = 'publish' and post_type = 'post' ORDER BY post_date ASC LIMIT 1"); 4 $yyyy = intval(substr($firstdate, 0, 4)); 5 return $yyyy; 6} 7echo test_year(); 8

試したこと

https://wpdocs.osdn.jp/Transients_API を見たのですが、イマイチよくわかりません。

php

1if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) { 2 function test_year(){ 3 global $wpdb; 4 $firstdate = $wpdb->get_var("SELECT post_date from $wpdb->posts where post_status = 'publish' and post_type = 'post' ORDER BY post_date ASC LIMIT 1"); 5 $yyyy = intval(substr($firstdate, 0, 4)); 6 return $yyyy; 7 } 8 set_transient( 'special_query_results', $special_query_results, 12 * HOUR_IN_SECONDS ); 9} 10echo test_year();

としてみたのですが、何も表示されません。

php

1if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) {

php

1set_transient( 'special_query_results', $special_query_results, 12 * HOUR_IN_SECONDS );

の間にコードを書けば良いわけではなさそうなので
どのように書いたらよいでしょうか。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

stampdoor

2018/04/08 06:44

単純に global $wpdb; $firstdate = $wpdb->get_var("SELECT post_date from $wpdb->posts where post_status = 'publish' and post_type = 'post' ORDER BY post_date ASC LIMIT 1"); var_dump($firstdate); とすると何が出力されますか?
guest

回答1

0

書くならこうでしょう。

PHP

1function test_year() { 2 global $wpdb; 3 $firstdate = $wpdb->get_var("SELECT post_date from $wpdb->posts where post_status = 'publish' and post_type = 'post' ORDER BY post_date ASC LIMIT 1"); 4 return intval( substr( $firstdate, 0, 4 ) ); 5} 6$special_query_results = get_transient( 'special_query_results' ); 7if ( false === $special_query_results ) { 8 $special_query_results = test_year(); 9 set_transient( 'special_query_results', $special_query_results, 12 * HOUR_IN_SECONDS ); 10} 11echo $special_query_results;

投稿2018/04/08 15:20

kei344

総合スコア69407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問