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

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

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

dateは、date型や日付に関する関数や処理についてのタグです

WordPress

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

PHP

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

検索

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

Q&A

解決済

1回答

2128閲覧

不動産物件一覧の絞り込み検索において、築年数を自動計算して検索したい

raberu

総合スコア3

date

dateは、date型や日付に関する関数や処理についてのタグです

WordPress

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

PHP

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

検索

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

0グッド

0クリップ

投稿2020/08/05 03:04

編集2020/08/05 03:09

前提・実現したいこと

WordPressで不動産の物件一覧を作っています。
物件情報の中に築年数を表示して、その築年数で絞り込み検索をできるようにしたいです。
そして、その築年数の表示は現在の日付と築年月日によって計算されて表示されています。
また、検索はプラグインの「Search & Filter Pro」を使用しています。

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

築年数の表示に関しては、カスタムフィールドに(year・month・date)の3つの項目を作り、そこへ年月日を入力して、functions.phpに下記関数を定義。そして、カスタムフィールドに(age)の項目を作り、そこで[age]のショートコードを入力することにより計算された築年数を表示できました。

しかし、その築年数に対して絞り込み検索を行うと、発火する前のショートコードの文字列(今回で言うと[age])に対して検索がかかってしまい、実際に計算(return)された築年数に対して、検索がかけれません。
上記関数nobita_ageによってreturnされた築年数に対して、検索をかけるための方法はありませんでしょうか。

<?php //築年数計算式 add_shortcode( 'age' , 'nobita_age' ); function nobita_age() { global $post; $now = date( "Ymd" ); $year = sprintf( '%04d', get_post_meta($post->ID,'year',true ) ); $month = sprintf( '%02d', get_post_meta($post->ID,'month',true ) ); $date = sprintf( '%02d', get_post_meta($post->ID,'date',true ) ); if( ! checkdate($month,$date,$year) ) { return 'invalid date'; } $birth = (int) $year . $month . $date; return floor( ($now - $birth) / 10000 ); } ?>

試したこと

検索の時点ではショートコード[age]が発火していないため、数値ではなく文字列[age]に対して検索がかかってしまっていると思いました。そこで、「search-flter-pro.php」の冒頭に上記関数を記入したら検索の際に発火するかと思い、記入しましたがエラーになってしまいました。

補足情報(使用プラグインなど)

この件に関しては、
・Advanced Custom Fields
・Search & Filter Pro
の2つのプラグインを使用しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

情報が少ないので一般論になりますが...

ショートコードは、do_shortcode 関数が実行されたタイミングしか処理されませんので、カスタムフィールドには、普通に計算した築年数の数字を保存しておき、一年に一回、値を更新して保存したら良いのではないでしょうか。

また、毎回、全数を再計算すると無駄に負荷が高くなるので、可能であれば wp_cron 等でアクセスの少ない時間帯に、今日の日付の分だけを絞り込んで、築年数の更新をバッチ処理で計算させた方が良いと思います。

投稿2020/08/05 04:43

編集2020/08/05 04:43
CHERRY

総合スコア25171

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問