You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已实现moviestax的terms添加至自定义metabox,如何新增bookstax的terms?

当然可以!完全能把「bookstax」的Terms也加到同一个Metabox里

下面是基于你现有代码的修改思路和具体实现,你可以直接参考调整:

1. 先回顾你现有Metabox的核心逻辑

假设你之前输出moviestax Terms的代码大概是这样的:

// 获取moviestax的所有分类项
$movie_terms = get_terms( array(
    'taxonomy' => 'moviestax',
    'hide_empty' => false, // 显示空分类
) );

// 把分类项渲染到Metabox中
if ( ! empty( $movie_terms ) && ! is_wp_error( $movie_terms ) ) {
    echo '<h4>电影分类</h4>';
    foreach ( $movie_terms as $term ) {
        echo '<label><input type="checkbox" name="selected_movie_terms[]" value="' . esc_attr( $term->term_id ) . '" /> ' . esc_html( $term->name ) . '</label><br>';
    }
}

2. 添加「bookstax」的Terms输出

只需要在同一个Metabox的回调函数里,复制类似的逻辑,把taxonomy参数替换成bookstax即可:

// 获取bookstax的所有分类项
$book_terms = get_terms( array(
    'taxonomy' => 'bookstax',
    'hide_empty' => false,
) );

// 把分类项渲染到Metabox中
if ( ! empty( $book_terms ) && ! is_wp_error( $book_terms ) ) {
    echo '<h4>书籍分类</h4>';
    foreach ( $book_terms as $term ) {
        echo '<label><input type="checkbox" name="selected_book_terms[]" value="' . esc_attr( $term->term_id ) . '" /> ' . esc_html( $term->name ) . '</label><br>';
    }
}

3. 同步修改数据保存逻辑

如果之前只处理了moviestax的保存,现在要加上bookstax的保存代码,确保选中的分类项能正确存储:

// 保存moviestax的选中项
if ( isset( $_POST['selected_movie_terms'] ) ) {
    $selected_movie_terms = array_map( 'intval', $_POST['selected_movie_terms'] );
    wp_set_post_terms( $post_id, $selected_movie_terms, 'moviestax', false );
} else {
    // 没有选中时清空关联
    wp_set_post_terms( $post_id, array(), 'moviestax', false );
}

// 保存bookstax的选中项
if ( isset( $_POST['selected_book_terms'] ) ) {
    $selected_book_terms = array_map( 'intval', $_POST['selected_book_terms'] );
    wp_set_post_terms( $post_id, $selected_book_terms, 'bookstax', false );
} else {
    wp_set_post_terms( $post_id, array(), 'bookstax', false );
}

几个小提醒

  • 确认bookstax这个分类法已经成功注册(可以用get_taxonomies()函数验证)
  • 表单字段的name属性要区分开(比如selected_movie_terms和selected_book_terms),避免数据冲突
  • 始终用esc_attr()和esc_html()做安全转义,防止XSS漏洞

这样就能在同一个Metabox里同时管理两个分类法的Terms啦~

内容的提问来源于stack exchange,提问作者Mona Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:23:25