导出时换算重力表单录入日期

时间:2017-12-15 作者:katart

重力表单提供了一个钩子,用于在使用导出条目列表时修改字段值gform_export_field_value 钩它们显示了一个示例,说明如何在其documentation.

我想更改输入日期字段的日期格式。以下是迄今为止我拥有的但似乎不起作用的内容:

add_filter( \'gform_export_field_value\', \'export_entry_date_value\', 10, 4 );
function export_entry_date_value( $value, $form_id, $field_id, $entry ) {

    if( $field_id == \'date_created\' ) {
        return !empty( $value ) ? date(\'F\', strtotime($value) ) : $value;
    }

    return $value;
}
以下是挂钩上的信息:gform_export_field_value

有什么想法吗?

1 个回复
最合适的回答,由SO网友:David Sword 整理而成

无法修改导出重力表单时创建的日期date_created 场实际上并不是一个受那个钩子影响的场。如果你进去看看/exports.php 你会发现start_export() 他们绕过ID的过滤器date_createdpayment_date 硬代码强制使用Y-m-d H:i:s

foreach ( $leads as $lead ) {
    GFCommon::log_debug( __METHOD__ . \'(): Processing entry #\' . $lead[\'id\'] );

    foreach ( $fields as $field_id ) {
        switch ( $field_id ) {
            case \'date_created\' :
            case \'payment_date\' :
                $value = $lead[ $field_id ];
                if ( $value ) {
                    $lead_gmt_time   = mysql2date( \'G\', $value );
                    $lead_local_time = GFCommon::get_local_timestamp( $lead_gmt_time );
                    $value           = date_i18n( \'Y-m-d H:i:s\', $lead_local_time, true );
                }
                break;
            default :
                $field = RGFormsModel::get_field( $form, $field_id );

                $value = is_object( $field ) ? $field->get_value_export( $lead, $field_id, false, true ) : rgar( $lead, $field_id );
                $value = apply_filters( \'gform_export_field_value\', $value, $form_id, $field_id, $lead );

                ...
相反,您可以在表单中创建一个自定义字段,将其设为隐藏字段,然后使用另一个gform_pre_submission 钩子来填充提交时的服务器时间。

作为GravityForms客户,their support is superior, 也许他们有更好的手段。他们也很乐于接受建议——打开一张罚单作为建议,为该日期格式添加一个挂钩,可能值得一试。

结束