我正在wordpress中的一个项目上工作, 在这里我正在使用CMB2插件来构建自定义元框和字段。但是在一种情况下, 我需要一个带有自定义回调函数的自定义元框, 以便在其中创建一些自定义动态字段。
我从cmb得到的是添加带有自定义回调的meta字段, 例如
$cmb->
add_field( array(
'name'=>
__( 'Test', 'cmb2' ), 'id'=>
$prefix . 'test', 'type'=>
'text', 'default' =>
'prefix_set_test_default', ) );
回调:
function prefix_set_test_default( $field_args, $field ) {
return my_custom_fields;
}
我现在能做什么?
提前致谢
#1你必须从CMB2的回调函数返回一个关联数组, 以生成你的自定义字段。
这是有关如何从自定义帖子类型返回帖子下拉列表的示例:
$cmb->
add_field( [
'name'=>
__( 'Posts dropdown', 'cmb2' ), 'id'=>
$prefix . 'dropdown', 'type'=>
'select', 'show_option_none' =>
true, 'options_cb'=>
'get_my_custom_posts', ] );
【在WordPress中使用CMB2添加具有自定义回调函数的自定义元框()】回拨功能
function get_my_custom_posts() {
$posts = get_posts( [ 'post_type' =>
'my_custom_post_type' ] );
$options = [];
foreach ( $posts as $post ) {
$options[ $post->
ID ] = $post->
post_title;
}return $options;
}
#2
Below is proper way to add custom meta by CMB2 meta box.add_action( 'cmb2_admin_init', 'cmb2_custom_metaboxes' );
function cmb2_sample_metaboxes() {//your custom prefix
$prefix = '_customprefix_';
$cmb = new_cmb2_box( array(
'id'=>
'test_metabox', 'title'=>
__( 'Test Metabox', 'cmb2' ), 'object_types'=>
array( 'page', ), // Post type
'context'=>
'normal', 'priority'=>
'high', 'show_names'=>
true, // Show field names on the left
// 'cmb_styles' =>
false, // false to disable the CMB stylesheet
// 'closed'=>
true, // Keep the metabox closed by default
) );
// Regular text field
$cmb->
add_field( array(
'name'=>
__( 'Test', 'cmb2' ), 'desc'=>
__( 'field description', 'cmb2' ), 'id'=>
$prefix . 'text', 'type'=>
'text', 'default' =>
'prefix_set_test_default', ) );
//Add more field as custom meta
}function prefix_set_test_default($field_args, $field){
return my_custom_fields;
}
推荐阅读
- 将自定义顶级外部和自定义子菜单外部链接添加到WP Admin
- #私藏项目实操分享# 在shiro基础上整合jwt,可在项目中直接使用呦
- 使用 Python Poetry 进行依赖管理
- k8s 使用 vocano.sh 支持binpack
- 代码之外(人生最大的幸运就是努力没有白费#2021年底大盘点#)
- Shell 编程规范与变量
- Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级插件化终于实现!
- shell函数算法
- 面试时,我是这么谈工资的