我正在使用CMB2在WordPress中添加基本元数据库,如下所示。。
add_action( \'cmb2_admin_init\', \'cmb2_sample_metaboxes\' );
function cmb2_sample_metaboxes() {
$prefix = \'_yourprefix_\';
$cmb = new_cmb2_box( array(
\'id\' => \'test_metabox\',
\'title\' => __( \'Test Metabox\', \'cmb2\' ),
\'object_types\' => array( \'page\', ),
\'context\' => \'normal\',
\'priority\' => \'high\',
\'show_names\' => true,
) );
$cmb->add_field( array(
\'name\' => __( \'Test Text\', \'cmb2\' ),
\'desc\' => __( \'field description (optional)\', \'cmb2\' ),
\'id\' => $prefix . \'text\',
\'type\' => \'text\',
\'show_on_cb\' => \'cmb2_hide_if_no_cats\',
) );
}
一切都很好,但我正在尝试在保存值时运行自定义函数。
我找到了函数after_save - https://cmb2.io/api//source-class-CMB2.html#804
但我正在努力解决如何连接到它并运行自己的功能。有人做过类似的事情吗?
最合适的回答,由SO网友:Timothy Fisher 整理而成
如果你还没有找到答案,我通过筛选源代码找到了答案。我可以通过以下方式连接到post save事件:cmb2_save_{$object_type}_fields_{$cmb_id}
. 每当您使用特定的元盒ID保存某个对象类型时,就会触发此挂钩。
那么,在你的情况下$cmb_id
是test_metabox
, 和$object_type
将是page
.
上钩看起来像这样:
add_action( \'cmb2_save_page_fields_test_metabox\', \'my_post_save_function\', 10, 3 );
function my_post_save_function( string $object_id, array $updated, CMB2 $cmb )
{
// code
}
源代码中的docblock出错,我更正了上面的参数类型:
Source