创建用于计算年龄的新自定义字段

时间:2016-10-24 作者:shugar

我有一个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()选项,但我不知道如何从出生日期开始抓取年龄并将其保存到数据库中,以便进行筛选。

非常感谢。

1 个回复
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);

?>

相关推荐

Apply_Filters()对所需的参数进行切片

我正在尝试向WooCommerce订单中的每个退款行添加一个按钮(其功能超出了这个问题的范围,足以说明它需要退款id作为参数)。我发现这些行是在woocommerce\\includes\\admin\\meta Box\\views\\html订单退款中创建的。无法重写的php。然而,有一项行动:do_action( \'woocommerce_admin_order_item_values\', null, $refund, $refund->get_id() ); 这似乎非常适合我的