Failure to add term meta

时间:2016-03-10 作者:David Kees

我正在修改自定义分类法,允许内容管理器指定术语在小部件中出现的数字顺序。在这种情况下,他们不能依赖字母顺序。我用过this tutorial 向条目中添加输入[type=number]并编辑表单,这样就可以了。实际添加或编辑术语以保存订单时会出现问题。代码如下:

public function sanitize_term_order($number) {
    return is_numeric($number) ? absint($number) : 1;
}

public function add_order_to_service_hierarchy_when_adding() {
    $field = $this->controller->hierarchy_tax . "-term-order"; ?>

    <div class="form-field form-field-custom term-group <?php echo $field ?>">
        <label for="<?php echo $field ?>">Term Order</label>
        <input type="number" step="1" min="1" name="<?php echo $field ?>" id="<?php echo $field ?>" value="1">
        <?php wp_nonce_field(basename(__FILE__), $field . "-nonce") ?>
    </div>

<?php }

public function add_order_to_service_hierarchy_when_editing($term) {
    $field = $this->controller->hierarchy_tax . "-term-order";
    $value = get_term_meta($term->term_id, $field, true);

    if (!is_numeric($value)) {
        $value = 1;
    } ?>

    <tr class="form-field form-field-custom term-group-wrap <?php echo $field ?>">
        <th scope="row"><label for="<?php echo $field ?>">Term Order</label></th>
        <td>
            <input type="number" step="1" min="1" name="<?php echo $field ?>" id="<?php echo $field ?>" value="<?php echo $value ?>">
            <?php wp_nonce_field(basename(__FILE__), $field . "-nonce") ?>
        </td>
    </tr>

<?php }

public function save_hierarchy_term_order($term_id) {
    $field = $this->controller->hierarchy_tax . "-term-order";
    if (isset($_POST[$field . "-nonce"]) && wp_verify_nonce($_POST[$field . "-nonce"], basename(__FILE__))) {
        $value = $this->sanitize_term_order($_POST[$field]);

        echo ("field: $field<br>value: $value<br>term_id: $term_id<br><br>");
        $results = update_term_meta((int)$term_id, $field, $value);
        die(var_dump($results));
    }
}
下面是一个结果示例:

field: service-hierarchy-term-order
value: 2
term id: 58

bool(false) 
我已经将过滤器和操作添加到这两个程序中存在的每个钩子中taxonomy.phpmeta.php 在我用过update_term_meta() 在我的代码中。我试过使用add_term_meta()update_term_meta() 单独看看是否有帮助。尽管VARCHAR(255)是数据库中meta\\u键列的长度,我还是更改了字段的名称,以查看是否存在隐藏的长度限制。

而且,运气不好。目前,为了继续开发,我已经使用站点选项(即。update_option($field ."-". $term_id, $value)) 这是可行的,但我更愿意弄清楚为什么“元功能”这个词会失败。

有什么想法吗?

1 个回复
最合适的回答,由SO网友:David Kees 整理而成

这原来是一个数据库问题。

由于基础架构团队采取了一些安全措施,网络升级脚本无法在所有站点上完成升级。因此,对于我们WordPress网络中测试此插件的特定站点,wp\\U termmeta表尚未创建。我们与团队一起撤销了他们所做的工作,重新运行了网络升级,一切都很好。

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p