不幸的是,不可能修改字段以使用名称而不是ID,也不可能保留AJAX功能。
您可以使用一个标准的选择字段,并将post数据以所需的格式传递给该字段,尽管您将失去AJAX功能。
要百分之百实现您的目标,唯一的方法是创建自定义CMB字段类型。
不幸的是,Post\\u Select\\u字段和Select\\u字段类不是最容易使用的,尤其是AJAX类。我目前正在对此进行一次大修,一旦发布,应该会更加清晰。可能至少要几周。
Update to include some code
这是使用标准选择字段的方式:
add_filter( \'cmb_meta_boxes\', \'cmb_sample_metaboxes\' );
function cmb_sample_metaboxes( array $meta_boxes ) {
$post_select_options = array();
$my_query = new WP_Query( \'post_type=post&posts_per_page=100\' );
while ( $my_query->have_posts() ) {
$my_query->the_post();
global $post;
$post_select_options[$post->post_name] = get_the_title( get_the_id() );
}
wp_reset_postdata();
$meta_boxes[] = array(
\'title\' => \'CMB Test - all fields\',
\'pages\' => \'post\',
\'fields\' => array(
array( \'id\' => \'field-ID\', \'name\' => \'Post Select field\', \'type\' => \'select\', \'options\' => $post_select_options, \'allow_none\' => true ),
)
);
return $meta_boxes;
}