WordPress CMB2-保存时运行函数

时间:2018-04-28 作者:fightstarr20

我正在使用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

但我正在努力解决如何连接到它并运行自己的功能。有人做过类似的事情吗?

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

如果你还没有找到答案,我通过筛选源代码找到了答案。我可以通过以下方式连接到post save事件:cmb2_save_{$object_type}_fields_{$cmb_id}. 每当您使用特定的元盒ID保存某个对象类型时,就会触发此挂钩。

那么,在你的情况下$cmb_idtest_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

结束

相关推荐

WordPress Plugins won't save

我有一个WordPress网站,我刚刚接管了一个客户,因此我没有能力与以前的网站管理员/开发人员交谈。该网站使用的是YOOtheme对Subway稍加修改的版本。为了更新插件位置,Subway的一部分有“小部件选项”。我无法更改外观或小部件显示的页面,因为我无法保存任何内容。它看起来像已保存,但没有保存,或者您会在保存按钮旁边看到“加载循环”,它一直在运行。Things to note:<WordPress和插件是最新的。在我们转移到新服务器之前,插件是可更新的。新服务器有一个max\\u inpu