我有一个插件,在创建帖子时触发WordPress的save_post
钩子。这个插件是一个刮插件。我需要添加一些代码到functions.php
文件,一旦save_post
钩子被这个插件触发,应该保存数据。
我的代码在做什么:
- 从
howtoapply
字段中获取数据。 - 使用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} );
请尝试一下,如果发现任何问题请告诉我
谢谢。