我提前道歉,我在发布这个问题之前搜索了一个答案,但没有看到,我看到了一些变化,但无法完全理解。
我有两种自定义帖子类型:建筑和公寓。我想通过metabox下拉列表为每个公寓分配一栋建筑。
这就是我的职能。php文件:
function get_myposttype_options( $query_args ) {
$args = wp_parse_args( $query_args, array(
\'post_type\' => \'buildings\',
) );
$posts = get_posts( $args );
$post_options = array();
if ( $posts ) {
foreach ( $posts as $post ) {
$post_options[ $post->ID ] = $post->post_title;
}
}
return $post_options;
}
这是我的Metbox
$meta_boxes[] = array(
\'id\' => \'buildingdetails\',
\'title\' => \'Add to Building\',
\'pages\' => array( \'property\' ),
\'context\' => \'normal\',
\'priority\' => \'high\',
// List of meta fields
\'fields\' => array(
array(
\'name\' => \'\',
\'id\' => $prefix . \'test_select\',
\'type\' => \'select\',
\'options\' => get_myposttype_options(),
),
)
);
任何帮助都将不胜感激。
SO网友:Tom J Nowell
您将希望通过官方API创建一个标准的metabox,如何做到这一点超出了这个答案,我将讨论的是您的下拉列表。
您需要保存的是建筑物的Post ID,因此类似于以下伪代码:
<?php
$current_building=....;
?>
<select name="....">
<?php
$query = new WP_Query( array( \'post_type\' => \'buildings\' ));
if ( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
?>
<option value="<?php the_ID(); ?>" <?php selected( get_the_ID(), $current_building ); ?>><?php the_title(); ?></option>
<?php
}
}
?>
</select>
现在您已经对输入进行了排序,请将其视为metabox中的任何其他输入。长方体的保存和创建与正常情况相同