创建和移动分类的术语

时间:2016-10-24 作者:markb

我正在尝试创建前端分类法和术语接口。

我目前有:

<form id="updatetax" method="post">
    <input name="term_name" type="text" value="">

    <select name="tax_selection">
    <?php $taxonomies   = get_object_taxonomies( \'cpt_taxonomy\', \'objects\' ); ?>

        <option value="">Select an option</option>
        <?php
            foreach( $taxonomies as $taxonomy ) {
                echo \'<option value="\' . $taxonomy->name . \'">\' . $taxonomy->label . \'</option>\';
            }

        ?>
    </select>

    <!-- I have a hidden input with the term ID and the current taxonomy if updating -->
    <input name="termID" value="<?php echo $_GET[\'termID\']; ?>">
    <input name="currentTax" value="<?php echo $_GET[\'currentTax\']; ?>">
</form>
然后在提交中,我获取字段并尝试更新术语:

<?php
    $term_args = array(
        \'name\'      => $_POST[\'term_name\'],
        \'taxonomy\'  => $_POST[\'tax_selection\'],
        \'term_id\'   => $_POST[\'termID\']
    );

    wp_update_term( $_POST[\'termID\'], $_POST[\'currentTax\'], $term_args );

?>
在法典中,似乎这就是更新这个术语所需要做的一切。然而,尽管我可以更新标题,但我似乎无法更改和更新分类法。

我想知道我做错了什么。我的最终目标是能够在分类法之间移动/更新术语,从上面的表单中添加新术语(通过在选择字段中选择分类法),以及添加自定义术语元。

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

wp_update_term() 不会更改分类法。它只是更新了现有的分类法。说出下面的代码-

$update = wp_update_term( 1, \'category\', array(
    \'name\' => \'Uncategorized Renamed\',
    \'slug\' => \'uncategorized-renamed\'
) );

if ( ! is_wp_error( $update ) ) {
    echo \'Success!\';
}
此代码查找ID为1的类别,然后将其更新为作为参数传递的名称和slug。在我的系统上下文中,ID为1的类别未分类。因此它将重命名它。

对于更改术语分类法,没有默认函数。我给你写了一封信。看看下面-

function the_dramatist_change_terms_taxonomy( $term_id, $future_taxonomy ){
    global $wpdb;
    $update = $wpdb->update(
        $wpdb->prefix . \'term_taxonomy\',
        [ \'taxonomy\' => $future_taxonomy ],
        [ \'term_taxonomy_id\' => $term_id ],
        [ \'%s\' ],
        [ \'%d\' ]
    );
    return $update;
}
在这里$term_id 是您要更改的术语ID,以及$future_taxonomy 是未来分类法的术语。$future_taxonomy 必须是字符串\'category\', \'post_tag\'\'any_other_taxonomy\'. It actually updates the database value directly. So be careful before you use it. 如果您的学期有任何家长,请特别小心。因为它基本上是在更新分类法值wp_terms_taxonomy 表,而不是任何其他表。对于更新术语分类法,我没有找到更好的选择。

以及在分类法中插入术语,您可以使用wp_insert_term( $term, $taxonomy, $args = array() ). 因此,您可以检查所需的分类是否存在。如果存在,则更新它;如果不存在,则创建它。如下所示-

$term = term_exists( \'Uncategorized\', \'category\' );
if ( $term !== 0 && $term !== null ) {
    the_dramatist_change_terms_taxonomy( $term->term_id, $future_taxonomy )
} else {
    wp_insert_term( \'...All..The...Parameter..Here\' );
}

相关推荐

ACF Taxonomy in Loop

你好吗我的问题是,我在头版上显示了一些卡片,例如名称和描述,这些信息来自我的分类法event,因为我用ACF创建了一些字段,我想在卡片中打印它们,但我不知道怎么做。下面是我如何打印卡片的代码 <?php if(is_front_page()): $terms = get_terms( [ \'taxonomy\' => \'evento\', \'hide_empty\' =>