我正在尝试通过挂接到save-post
行动,但由于我不明白的原因,它不起作用。
以下函数位于主题的functions.php
:
function save_address_meta() {
$meta = get_post_meta( get_the_ID() );
$address = $meta[\'address\'];
update_post_meta(get_the_ID(), $address, \'test\');
}
add_action( \'save_post\', \'save_address_meta\', 50 );
我试过使用
pre_post_update
还有,据我所知
save_post
除非在帖子中更新了自定义字段以外的内容,否则不会真正触发,但这一点也不走运。
我花了几个小时在stackexchange和其他各种在线资源上搜索解决方案,但都不太对劲。这是原始代码的简化版本,但即使在这种基本状态下,它似乎也不起作用。
基本上,我尝试获取有问题的自定义字段,然后用字符串值更新它。
如果我print_r
这个$meta
数组中,自定义字段值显示在数组中,如下所示:
[address] => Array ( [0] => 50 Call Lane Leeds LS1 6DT United Kingdom )
我还尝试使用访问上述函数中的此自定义字段
$address = $meta[\'address\'][0]
.
我可以通过这种方式回显键的值,但如果我没有弄错的话,我需要引用它,以便第三个参数中的字符串按照预期更新值。
最合适的回答,由SO网友:Abdul Awal Uzzal 整理而成
Try changing update_post_meta(get_the_ID(), $address, \'test\');
to update_post_meta(get_the_ID(), \'address\', \'test\');
SO网友:Nathan Johnson
这个save_post
每当WordPress将帖子保存到数据库时,钩子就会触发。这包括保存WP修订,该修订将具有与实际职位不同的职位ID。你很可能正在将帖子元保存到修订版,而不是实际的帖子。
此外save_post
钩子在激发时传递一些变量,包括post ID,因此您不必使用get_the_ID()
作用
function wpse_261414_save_post( $post_id, $post, $update ) {
//* Make sure this isn\'t a post revision
if( wp_is_post_revision( $post_id ) ) {
return;
}
$meta = get_post_meta( $post_id );
$address = $meta[ \'address\' ];
update_post_meta( $post_id, $address, \'test\' );
}
add_action( \'save_post\', \'wpse_261414_save_post\', 10, 3 );