前提・実現したいこと
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つのプラグインを使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。