我有一个wordpress网站,自定义的帖子类型是人。它们包括各种自定义字段描述符,其中之一是bith日期。
我有出生日期字段(通过高级自定义字段),并通过向函数中添加代码将其显示在前端。php文件:
function age_in_years() {
$year_of_birth = get_field( \'date_of_birth\', $modelID );
return intval( date( \'Y\', time() - strtotime( $year_of_birth ) ) ) - 1970;
}
然而,我也希望能够根据年龄范围过滤这些自定义帖子类型(我正在使用FacetWP,但很乐意在其他地方寻找)-因为年龄只是前端显示,我无法根据年龄进行过滤-有人能告诉我正确的方向吗?我知道高级自定义字段有update\\u field()选项,但我不知道如何从出生日期开始抓取年龄并将其保存到数据库中,以便进行筛选。
非常感谢。
SO网友:Patrizio Mwange
为了能够按年龄进行查询,您需要创建另一个自定义隐藏字段来存储日期。
然后,您可以钩住acf/save_post 使用优先级高于10的挂钩,以便在创建/更新字段时更新年龄字段值。
下面是代码的要点
<?php
function my_acf_save_post($post_id)
{
// check if post type is persons
$post_type = get_post_type($post_id);
if ($post_type != \'people\') {
//return if its not a people post type
return;
}
// get year of birth value
$year_of_birth = get_field(\'date_of_birth\', $modelID);
//calculate the value of age
$age = intval(date(\'Y\', time() - strtotime($year_of_birth))) - 1970;
// update the age field
update_field(\'age_field\', $age);
}
// run after ACF saves the $_POST[\'acf\'] data
add_action(\'acf/save_post\', \'my_acf_save_post\', 20);
?>