Metabox 不显示所选项目

Metabox Not Showing the Selected Item

我有一个自定义 post 类型,我在其中创建了 2 个分类法。 我正在使用 meta_box_cb 将默认复选框更改为单选列表,因为我只需要允许选择一个项目。

虽然这一切都有效(注意,它甚至 "saves" 正确的值),但我似乎无法获得第二个分类法来显示所选择的内容,尽管我可以看到它保存在数据库中我查询了 _postmeta table。

数据库记录截图: 显示的屏幕截图:

这是注册分类法的代码:

private function create_the_term( $term_name, $term_label ) {
    register_taxonomy(
        $term_name, array( 'gyo_alerts', ), 
        array(
            'hierarchical'=> true, 
            'label' => $term_label,
            'singular_label' => $term_label,
            'rewrite' => false,
            'publicly_queryable' => false,
            'public' => false,
            'show_ui' => true,
            'show_in_menu' => false,
            'show_in_nav_menus' => false,
            'show_admin_column' => true,
            'capabilities'      => array( // we need most of the display options, but do not want these to be edittable
                'assign_terms' => 'manage_options',
                'edit_terms'   => 'god',
                'manage_terms' => 'god',
            ),
            'show_in_quick_edit' => false,
            'meta_box_cb' => function( $post, $box ) { // change these to single-select
                $the_term = $box['args']['taxonomy'];
                $terms = get_terms( $the_term, array( 'hide_empty' => false ) );
                $post  = get_post( );
                $_terms = wp_get_post_terms( $post -> ID, $the_term );

                $name  = '';

                if ( ! is_wp_error( $_terms ) ) {
                    if ( isset( $_terms[0] ) ) {

                        $name = wp_list_pluck( $_terms, 'name' )[0];

                    }
                }

                var_dump( $name );
                echo '<hr />';
                var_dump( $post->ID );
                echo '<hr />';
                var_dump( $the_term );
                echo '<hr />';
                var_dump( $_terms );

                foreach ( $terms as $term ) {

                    ?>
                    <label title='<?php esc_attr_e( $term -> name ); ?>'>
                    <input type="radio" name="<?php esc_attr_e( $the_term ); ?>" value="<?php esc_attr_e( $term -> name ); ?>" <?php checked( $term -> name, $name ); ?> />
                    <span><?php esc_html_e( $term -> name ); ?></span>
                    </label><br />
                    <?php
                }
                unset( $terms, $_terms );
            },
        )
    );
}

如何称呼它:

    // Status
    $this -> create_the_term( 'alert_type', 'Status' );

    // Alert Activity
    $this -> create_the_term( 'alert_activity', 'Activity' );

这就像 wp_get_post_terms 只针对第一个分类法被解雇...而完全忘记了第二个分类法。

我做错了什么?

深入了解为什么 $_terms = wp_get_post_terms( $post -> ID, $the_term ); 没有被填充让我意识到这些并没有保存为 termmeta,而是保存为 postmeta

一旦我将其更改为 $post_saved_terms = get_post_meta( $post -> ID, $which ); 它就开始工作了