当插件触发WordPress save_post钩子时,如何保存ACF自定义字段数据



我有一个插件,在创建帖子时触发WordPress的save_post钩子。这个插件是一个刮插件。我需要添加一些代码到functions.php文件,一旦save_post钩子被这个插件触发,应该保存数据。

我的代码在做什么:

  1. howtoapply字段中获取数据。
  2. 使用PHP代码将格式化后的数据放入新字段application_email中,如下所示。

现在,没有使用save_post钩子,acf字段application_email数据不会保存在postmeta表中。但是,在单击edit post(这会刷新post)时,甚至不必单击Update按钮就可以保存数据。

save_post WordPress钩子被插件触发时,我如何运行这段代码,因为只有这样插件才能保存我的自定义字段数据以及正在抓取的数据。

代码:

add_filter('acf/load_field/name=application_email', function( $field ) {
        $howtoapply = get_field( 'howtoapply' );
        
            $apply_link = get_field( 'howtoapply' );
            $link       = $apply_link;
            libxml_use_internal_errors( true );
            $dom = new DOMDocument();
            @$dom->loadHTML( $link );
            $dom->loadHTML( $link );
            foreach ( $dom->getElementsByTagName( 'a' ) as $a ) {
            }
            function cfDecodeEmail( $encodedString ) {
                $k = hexdec( substr( $encodedString, 0, 2 ) );
                for ( $i = 2,$email = '';$i < strlen( $encodedString ) - 1;$i += 2 ) {
                    $email .= chr( hexdec( substr( $encodedString, $i, 2 ) ) ^ $k );
                }
                return $email;
            }
            if ( ! is_null( $a ) && is_object( $a ) ) {
                $field['value'] = cfDecodeEmail( $a->getAttribute( 'data-cfemail' ) );
                $GLOBALS[ $field['value'] ] = cfDecodeEmail( $a->getAttribute( 'data-cfemail' ) );
                if (!add_post_meta(get_the_ID(), 'application_email', $field['value'])) {
                //update_post_meta(get_the_ID(), 'application_email', $field['value']);
                // Update field in database
                update_field( 'field_123456', $field['value'] );
            }
                
            } else {
                
            }
        
        return $field;
    }
);

你可以这样使用,请更新你的代码:

update_field( 'field_123456', $field['value'], {post_id} );

请尝试一下,如果发现任何问题请告诉我

谢谢。

最新更新